JSON对象undefined
我有一个AJAX页面请求,它使用一个用于处理对我的MySQL数据库的查询的php文件。这个php文件工作得很好,但由于某种原因,它对我来说并不好。下面是我有:JSON对象undefined
function updateForm(){
ID = $('#listings').val();
$.ajax({
type: "POST",
url: 'query.php',
data: "query=true" +
"&id=" + ID,
datatype: 'json',
success: function(data) {
alert(data);
updatePreview();
}
});
}
给我一个弹出有:
{"results":[{"ID":"12","area":"Hoboken","bedrooms":"5","fullbath":"3","halfbath":"1","remarks":"No remarks to speak of.","sqft":"2500","photos":null,"price":"1000","fee":null,"realtor":"Jane Doe","phone":"555-555-5555","address":"10th & Willow","bix":"1"}]}
,但只要我将其更改为:
function updateForm(){
ID = $('#listings').val();
$.ajax({
type: "POST",
url: 'query.php',
data: "query=true" +
"&id=" + ID,
datatype: 'json',
success: function(data) {
alert(data.results);
updatePreview();
}
});
}
弹出只是说不确定。最终,我想解析出信息并相应地更新我的页面,但我似乎无法访问此JSON对象的任何属性。这是怎么回事?
编辑:
下面是从PHP文件中的代码:
if (isset($_POST['query'])){
if (isset($_POST['id'])){
$query = 'SELECT * FROM bix WHERE ID=' . get_post('id');
$listing = mysql_query($query);
print_json($listing);
}
}
function print_json($var){
$output = array();
while($row = mysql_fetch_assoc($var)) {
$output["results"][] = $row;
}
echo json_encode($output);
}
function get_post($var)
{
return mysql_real_escape_string($_POST[$var]);
}
你是否试过在ajax调用中在dataType中使用大写字母T?
你应该console.log(data)
相反,有了这个,你可以看到,你可以用它来访问数据的密钥。
尝试使用数据,而不是data.results的或针对data.id或data.area,看看它与
出现如果它表明你在警报弹出一个字符串,这意味着该数据是字符串,而不是JSON。 对于JSON,它显示[Object object]。
检查响应类型。它应该是application/json或applicaton/javascript,而不是text/plain或类似的东西。
UPDATE:还要确保服务器不会将整个字符串用引号引起来。例如。 “[..]” - 那只是一个字符串。因此,使用FireBug或Chrome开发者工具来查看实际响应。这可能有助于理解为什么jQuery无法正确处理它。
这很有趣,但根据jQuery文档的数据类型:'json',应该为你解除...你可以发布你的服务器端代码吗? – 2012-03-27 21:18:29
确定它在那里 – mavix 2012-03-27 21:44:54
正如尤金指出,数据是一个字符串。尝试评估:
var stuff = eval(data);
alert(stuff.results);
编辑:这工作,但jQuery.parseJSON可能更酷。
你可以发布你的服务器端代码吗? – 2012-03-27 21:18:36
也如果你console.log()你都得到了什么? – 2012-03-27 21:18:54
也许你没有在dataType中使用大写T ...... – Timmerz 2012-03-27 21:37:39