我正在使用带有jquery 1.4的uploadify上传图片。在上传文件的php脚本中我们打印出来:
$json_response['status'] = "true";
$json_response['file'] = $_FILES;
echo Zend_Json_Encoder::encode($json_response);
在javascript中我们(简而言之):
$('#images_upload_file').uploadify({
onComplete: function(event, queueID, fileObj, response, data) {
console.log("upload complete");
console.log(response);
无论如何,“回应”总是空的。 Event,queueID,fileObj和数据都正确填充。有谁知道如何解决这个问题?
如果您需要更多信息,请与我们联系。 PS:我们的代码上传图片就好了,自从我们升级到jquery 1.4以来,响应一直是空的
答案 0 :(得分:1)
我总是使用json2.js
来处理任何json数据。如果数据不是正确的json格式,该库具有安全机制。您可以从http://json.org获取,请务必下载js文件,而不是直接从其网站上使用。
我的代码总是这样:
onComplete : function (event, queueID, fileObj, response, data) {
//process response
try {
var r = JSON.parse(response);
//process the JSON data, ex
console.log(r.status);
}
catch(e) {
//not json or bad format, do something about it
alert("cannot parse data as json!");
}
}
我使用json2.js
的原因是因为我的php脚本有会话检查,如果不接受会话则会重定向。它在进入页面之前使用过滤器模块完成,因此我无法检查它是AJAX请求还是正常页面访问。如果所需的会话不满足页面的规则,它将立即重定向,因此它将返回一个完整的网页。
这将使响应不是有效的json格式。使用json2.js
我可以在catch
块中处理它,然后执行另一个操作,例如重新加载当前页面。这只是我经常使用的东西,而且总是为我工作。
仅供参考,json2.js
根本不需要与jQuery无关。
答案 1 :(得分:0)
PHP脚本中是否启用了error_reporting?
由于error_reporting
设置,它是否会导致致命错误(例如因为它无法加载Zend_Json_Encoder类)?