如何将ajax结果作为数组而不是字符串读取

时间:2013-09-11 19:50:34

标签: php jquery ajax

环境: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

我不确定我错过了什么,我确信它很简单。我觉得我已经尝试了一切。请有人告诉我哪里出错了?

4 个答案:

答案 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);