で、このコード、.getJSONがちっとも動かなくて、FFのエラーコンソール見るとhttpのリクエストを投げて戻ってきたっきり沈黙だしなんだそりゃ、と思ったら、smartyのデフォルトHTMLエスケープを有効にしてたせいで、

{$result|json nofilter}

としておかないと「"」がHTMLエスケープされたレスポンスを返していたという orz
ブラウザから/Ajax/zip/を直接叩くとちゃんとJSONのレスポンスが表示され(て見え)るので、なにげにソース表示するまで全然気がつかなかった‥‥