我是个新人,所以放轻松:
我无法弄清楚为什么这个$ .ajax函数不会将我的xhr数据附加到正确的位置。
// gets the cache data from our php file
function getcaches() {
$.ajax({
method: 'get',
url: "php/findcache.php",
dataType: "json", // return type data is json
success: function(data){ // <-- data is in json format
//parse the json data
$('#caches').append($('<p>' + data[0].name + '</p>'));
},
error: function(data) {
console.log('error');
}
});
return false;
}
这是相关的javascript。我知道数据正确存储在对象中,因为我可以在firebug中看到它......
[OU0397] => stdClass Object
(
[code] => OU0397
[name] => A Mighty Oak in the Open
[location] => 28.527633|-81.125167
[type] => Virtual
[status] => Available
)
我只是不明白我做错了什么。有什么指针吗?
答案 0 :(得分:2)
代码示例有XSS漏洞(如果名称中包含“&lt;”字符,该怎么办?)。
如果没有正确的HTML编码,请不要将文本值添加到HTML。您可以使用jQuery的text()方法来设置元素文本而不是连接字符串。
$('#caches').append($('<p/>').text(data[0].name));
这可能是您的输出不正确的原因之一。
您可以通过执行$('#caches')从Firebug或Chrome开发人员工具调试您的jQuery CSS选择器,它将返回匹配元素的数组。
答案 1 :(得分:1)
如果您有Firebug,请在此处设置断点:
$('#caches').append($('<p>' + data[0].name + '</p>'));
然后你检查data
。您的调试数据显示OU0397
为关键字;由于PHP的json_encode
,这意味着您可能会获得一本字典。字典以不同的方式遍历(例如for i in data { ... }
)。
您还可以考虑更改PHP以仅返回第一个结果;这简化了JavaScript并减少了网络开销(例如使用json_encode(current($data))
)。