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


json_encode returns array as a string when posting data with jquery.get()

你好,我在jquery中的ajax请求有问题。

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

$.get(
    loadUrl,
    function(data) {
        useReturnData(data);
    },
    "json"
);
function useReturnData(data){
    leftPlayer = data;
    alert(leftPlayer[4]);
};

这按预期工作,我收到我的值"528"是我的左玩家[4]值。

但是当我更改请求以在请求中将一段数据发送到php时,如下所示:

$.get(
    loadUrl,
    { type: "left" })
    .done(function(data) {
        useReturnData(data);
    },
    "json"
);
function useReturnData(data){
    leftPlayer = data;
    alert(leftPlayer[4]);
};

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

提醒左玩家时。我发现在我未发送数据的第一个请求中,变量打印为:355,355,355,355,528,等等......

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

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

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

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

有什么想法我哪里出错了吗?

我已经解决了我的问题。

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

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

$.getJSON(
    loadUrl,
    { type: "left" },
    function(data) {
        useReturnData(data);
    }
);
function useReturnData(data){
    leftPlayer = data;
    alert(leftPlayer[4]);
};

相反,使用 $.getJSON 会喜欢它所说的,并期望 JSON 作为默认值返回。