9

我正在尝试将 AJAX、JSON 传递给 PHP,然后 PHP 返回一些数据,我正在尝试用 Javascrpt 解析它。

从我返回的 php 服务器,

    echo json_encode($data); 

    // it outputs ["123","something","and more something"]

然后在客户端,

success : function(data){

    //I want the data as following

    // data[0] = 123
    // data[1] = something
    // data[3] = and more something
}

但是,它给出了;

        data[0] = [ 
        data[1] = " 
        data[2] = 1

它正在读取每个字符,但我想要数组中的字符串,而不是单个字符。这里发生了什么?在此先感谢,我是 Javascript 和 JSON、AJAX 的新手。

4

5 回答 5

11

JSON.parse(data)应该做的伎俩。

于 2012-05-31T10:25:48.970 回答
4

dataTypeajax 调用的属性设置为json. 然后 jQuery 会自动将您的响应转换为对象表示。

$.ajax({
    url : ...,
    data : ...,
    dataType : "json",
    success : function(json) {
        console.log(json);
    }
});

另一种选择是在 PHP 中设置标头,以便 JQuery 了解您发送的是 JSON 对象。

header("Content-Type: application/json");
echo json_encode($data);
于 2012-05-31T10:27:03.723 回答
3

检查这个...应该工作

成功:函数(数据){

var result = data;

result=result.replace("[","");

result=result.replace("]","");

var arr = new Array();

arr=result.split(",")

alert(arr[0]); //123

alert(arr[1]); //something

alert(arr[2]); //......
}
于 2012-05-31T10:30:03.547 回答
1

您没有显示解析数据的函数。但你应该使用

JSON.parse

如果 broser 不支持 JSON,则使用来自https://github.com/douglascrockford/JSON-js的 json polyfill

dataArray = JSON.parse(dataFomXHR);
于 2012-05-31T10:30:50.650 回答
1

我不确定这是否是您想要的,但您为什么不希望 php 以这种格式返回它:

{'item1':'123','item2':'something','item3':'and more something'}

为了实现这一点,您需要确保您的数组json_encode()是关联的。它应该是下面的形式

array("item1"=>123,"item2"=>"something","item3"=>"more something");

stripslashes()如果数组中的某些值可能是 URL,您甚至可以继续执行

然后您可以JSON.parse()对 JSON 字符串执行 a 并访问这些值

跳这有帮助!

于 2012-05-31T10:44:50.040 回答