我遇到的问题是jquery不想要我的json。
这是我的jquery代码:
$.ajax({
type: "POST",
url: "js/resize.php",
data: data,
success: function(data) {
/* works
var data = [
{"og_src":"img\/base\/logo.png","src":"img\/base\/das-logo.png"},
{"og_src":"\/img\/studio\/lounge-2.JPG","src":"\/img\/studio\/lounge-2.JPG"},
{"og_src":"\/img\/studio\/desk.JPG","src":"\/img\/studio\/desk.JPG"}
];
*/
// console.log(data);
$.each(data, function(key, image){
console.log(image);
var el = $("img[rel='"+image.og_src+"']");
...
如果我将发送的数据复制到我的脚本并生成var data = ...它可以正常工作。
php数据由一个简单的echo json_encode($ stack);
组成如果我像
那样制作一个php-echoecho '[{"og_src":"img\/base\/logo.png","src":"img\/base\/das-logo.png"}, {"og_src":"\/img\/studio\/lounge-2.JPG","src":"\/img\/studio\/lounge-2.JPG"}, {"og_src":"\/img\/studio\/desk.JPG","src":"\/img\/studio\/desk.JPG"}]';
它不起作用。
所有文件均为UTF-8。
Console.log显示console.log(image)的结果;作为一封信; 什么是错的,我现在试了好几个小时,我非常绝望。 感谢您的帮助。
答案 0 :(得分:2)
看起来您的JSON被解释为HTML(因此当您运行它的each
时,它会循环遍历HTML源的每个字符。)
确保您的PHP脚本说它正在输出JSON(PHP默认为HTML)。
header("Content-Type: application/json");
你也可以将dataType: "json"
选项传递给ajax
,这样jQuery库就会尝试将HTTP请求的结果解析为JSON,无论服务器说它是什么。在HTTP响应中拥有正确的信息是一个更清晰的解决方案。
答案 1 :(得分:1)
你应该告诉jQuery返回的数据应该是' json'使用dataType属性:
$.ajax({
type: "POST",
url: "js/resize.php",
data: data,
dataType: 'json',
success: function(data) {
}
});