无法从Plupload获取JSON数据
我使用Plupload上传文件,它工作正常。无法从Plupload获取JSON数据
我测试了在*上找到的各种建议,但是我仍然无法从JSON响应中获取任何合理的数据。
在我upload.php
文件我有echo json_encode($result);
在我的JS我做了以下内容:
uploader.bind('FileUploaded', function(up, file, response) {
var obj = jQuery.parseJSON(response);
var obj2 = eval(response);
alert(response.toSource()); // <-- Outputs raw data
alert(obj); // <-- is NULL
alert(obj2.toSource()); // <-- Outputs eval data format
alert(obj2.logo_url); // <-- Is not working
});
的alert(response.toSource());
返回此:
({response:"{
\"logo_url\":\"http:\\/\\/mysite.com\\/uploads\\/3b\\/7b019482c806f9_logo.jpeg\",
\"img_id\":\"30\",
\"feedback\":{\"message\":\"File uploaded\",
\"success\":true}}",
status:200})
和obj
为空。
我在这里做错了什么?
有许多事情错
- 删除该帖逃逸\”
- 响应+的状态应该是在引号
即
{
"response": {
"logo_url": "http: \\/\\/mysite.com\\/uploads\\/3b\\/7b019482c806f9_logo.jpeg",
"img_id": "30",
"feedback": {
"message": "Fileuploaded",
"success": true
}
},
"status": 200
}
我该如何删除它?它由'json_encode($ result)'生成。出于某种原因,还会添加“状态”。我没有在我的web服务文件中使用'json_encode()'返回所有数据的问题' – Steven 2012-04-25 10:59:43
您使用的是哪个版本的PHP?如果它小于5.4.0,那么你需要注意魔术引号(magic.quotes_gpc在php.ini中)。这将是最好的解决它在PHP中,但你可以在解析它之前在JavaScript中编辑json字符串,但这是混乱的方式。确保你使用的任何lib没有自己的json_encode而不是php一个(它的一个新的func和相当多的libs自己写的可能更糟的) – 2012-04-25 11:11:03
我找到了答案。 JSON是有效的。我试图做'$ .parseJSON(response)',但corect的方式是'$ .parseJSON(response.response)'。那就是诀窍。 – Steven 2012-04-25 12:41:36
VAR上传= $(“#multi_upload”)。pluploadQueue();
uploader.bind('FileUploaded', function (up, file, res) {
var res1 = res.response.replace('"{', '{').replace('}"', '}');
var objResponse = JSON.parse(res1);
alert(objResponse.fn);
});
首先在安装Firebug之类的东西之前,使用console.log作为alert不能处理复杂的类型我想 - console.log会显示所有对象的内容 – 2012-04-25 10:01:19
我已经是Firebug的常用用户。做一个console.log或警报将显示相同的结果 – Steven 2012-04-25 10:07:45
它不会实际上,警报将显示“[对象对象]”,如果它不为空,至少在Firefox中不会告诉你很多。我只是在该响应字符串上调用了parseJSON,并且它工作正常,因此在对象上调用它并不会为你工作,这很奇怪 – 2012-04-25 10:26:05