环境:PHP 5.3.5 MySQL Server 5.5.8
创建了我的第一个ajax电话,经过多次决定,我得到了结果。结果似乎以字符串形式返回。当我要求时
alert(result[0]);
我只返回一个角色。
如果我尝试使用字段名称,则返回的值为undefined。
这是我的AJAX的javascript:
$.ajax({
type: "POST",
url: "models/ajaxHandler.php",
data: "handler=this&stu=21",
success: function(result){
if (result !== null)
{
alert(result + " " + result[0] +" " result['firstname']);
var obj = JSON && JSON.parse(result) || $.parseJSON(result);
alert(obj + " " + obj[0] + " " + obj['firstname']);
}
ShowDialog(false);
e.preventDefault();
},
error: function()
{
alert("ajax failure");
}
});
因此,一旦使用PHP中的PDO连接捕获到具有fetchAll()的mysql的结果。我从php返回结果:
echo json_encode($results);
结果的警报如下:
[{“firstname”:“Test”,“0”:“Test”,“lastname”:“One”,“1”:“ 一 “ ”ID“: ”2“, ”2“: ”2“, ”st_usage_id“:空, ”3“:空},{ ”姓名“:” 先生“,”0“:”先生“,”姓“:”两个“,”1“:” 二 “ ”ID“: ”3“, ”2“: ”3“, ”st_usage_id“:空, ”3“:空},{ ”姓名“:” 先生“,”0“:”先生“,”姓“:”三“,”1“:” 三个“,”id“:”5“,”2“:”5“,”st_usage_id“:null,”3“:null}] [undefined
JSON的解析将所有结果作为对象返回。
我也尝试使用:
在php中返回结果print_r(json_encode($results));
它显示上面的相同字符串。最后我用了
$var_dump(results);
这返回了以下内容:
array(3) {
[0]=>
array(8) {
["firstname"]=>
string(7) " DrTest"
[0]=>
string(7) " DrTest"
["lastname"]=>
string(4) " One"
[1]=>
string(4) " One"
["user_public_info_id"]=>
string(1) "2"
[2]=>
string(1) "2"
["st_usage_id"]=>
NULL
[3]=>
NULL
}
[1]=>
array(8) {
["firstname"]=>
string(3) " Dr"
[0]=>
string(3) " Dr"
["lastname"]=>
string(4) " Two"
[1]=>
string(4) " Two"
["user_public_info_id"]=>
string(1) "3"
[2]=>
string(1) "3"
["st_usage_id"]=>
NULL
[3]=>
NULL
}
[2]=>
array(8) {
["firstname"]=>
string(3) " Dr"
[0]=>
string(3) " Dr"
["lastname"]=>
string(6) " Three"
[1]=>
string(6) " Three"
["user_public_info_id"]=>
string(1) "5"
[2]=>
string(1) "5"
["st_usage_id"]=>
NULL
[3]=>
NULL
}
}
a undefined
我不确定我错过了什么,我确信它很简单。我觉得我已经尝试了一切。请有人告诉我哪里出错了?
答案 0 :(得分:4)
指定json数据类型。
dataType: "json"
注意,在最近的jQuery版本中,结果永远不会是null
,而是在没有返回任何内容的情况下它会出错。
答案 1 :(得分:2)
如果您想接受答案:
尝试:
alert(obj[0]['firstname']);
答案 2 :(得分:1)
添加“results = $ .parseJSON(result);”在成功调用的开始,它应该把它变成一个Javascript对象。
答案 3 :(得分:0)
PHP文档http://php.net/manual/en/function.json-decode.php指出,当json_decode的第二个参数为true时,“返回的对象将被转换为关联数组。”
这应该适合你:
$results = json_decode(json_encode($results), true);
print_r($results);