我有一个AJAX页面请求,它使用一个用于处理MySQL数据库查询的php文件。 php文件工作正常,但由于某种原因,它对我不好。这就是我所拥有的:
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]);
}
答案 0 :(得分:2)
如果它在警告弹出窗口中显示一个字符串,则表示数据是字符串,而不是JSON。 对于JSON,它显示[Object object]。
检查响应类型。它应该是applicaton / json或applicaton / javascript,而不是text / plain或类似的东西。
更新:还要确保服务器不会在引号中返回整个字符串。例如。 “[..]” - 它只是一个字符串。因此,请使用FireBug或Chrome开发者工具查看实际响应。它可能有助于理解为什么jQuery无法正确处理它。
答案 1 :(得分:1)
您应该console.log(data)
,相反,您可以看到可用于访问数据的密钥。
答案 2 :(得分:1)
我不认为它会像解析的json那样回来......我相信它会以字符串的形式回归......
使用:
var x = jQuery.parseJSON(data);
alert(x.results)
答案 3 :(得分:1)
你是否已尝试在ajax调用中大写数据类型中的T?
答案 4 :(得分:0)
尝试使用数据而不是data.results或定位data.id或data.area,看看它出现了什么
答案 5 :(得分:0)
正如Eugene指出的那样,数据是一个字符串。试试eval:
var stuff = eval(data);
alert(stuff.results);
编辑:这有效,但jQuery.parseJSON可能更酷。