使用jquery.get()发布数据时,json_encode将数组作为字符串返回

时间:2013-09-01 11:28:05

标签: php javascript jquery ajax arrays

您好我的jquery中的ajax请求有问题。

当我使用我的get请求而不发送任何数据时,响应是预期的,我收到了我的数组并可以访问这些值:

$.get(
    loadUrl,
    function(data) {
        useReturnData(data);
    },
    "json"
);

function useReturnData(data){
    leftPlayer = data;
    alert(leftPlayer[4]);
};

这按预期工作,我接受“528”的值是我的leftPlayer [4]值。

但是当我在请求中更改我的请求以将一段数据发送到php时:

$.get(
    loadUrl,
    { type: "left" })
    .done(function(data) {
        useReturnData(data);
    },
    "json"
);

function useReturnData(data){
    leftPlayer = data;
    alert(leftPlayer[4]);
};

我收到的数据似乎是javascript的字符串格式。 我的警告打印“5”(如果数组是一个字符串,则为第4个字符)

警告leftPlayer。我发现在我发送没有数据的第一个请求中,变量打印为:355,355,355,355,528等...

在我发送数据的第二个请求中,它打印为:

[355,355,355,355,528等...]

注意[]。它不被识别为数组。

它访问的php文件在每个请求中绝对没有变化,因为我正在测试。发送的数据目前甚至没有在php文件中使用。

我出错的任何想法?

1 个答案:

答案 0 :(得分:1)

我已经解决了我的问题。

就像“nnnnnn”在他的评论中所说的那样,我将我的“json”参数传递给.done()函数而不是$ .get()函数。

我似乎无法将其正确地视为JSON,但我使用了最简单的方法:

$.getJSON(
    loadUrl,
    { type: "left" },
    function(data) {
        useReturnData(data);
    }
);

function useReturnData(data){
    leftPlayer = data;
    alert(leftPlayer[4]);
};

使用$ .getJSON确实喜欢它所说的内容并期望默认返回JSON。