0

目标

[{"ID": 1, "Name": "XBOX"}, {"ID": 2, "Name": "Playstation 3"}]通过$.ajax()使用 jQuery发送。

问题

我有这个:

[...]

var object = $.parseJSON(data);

$.ajax({
    type: "POST",
    url: "laboratory.php",
    data: object,
    success: function(response) {
        console.log(response);
    }
});

并且,在laboratory.php

<?php print_r($_REQUEST); ?>

最后,通过控制台返回的是:

Array
(
    [undefined] => 
)

这就是data's 变量的含义:

[{"ID": 1, "Name": "XBOX"}, {"ID": 2, "Name": "Playstation 3"}]

这就是object(通过 Chrome 的控制台)的意思:

[Object, Object]

有人可以给我一个想法吗?

4

3 回答 3

3

您是否尝试过使用 JSON.stringify:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify

$.ajax({
    type: "POST",
    contentType: 'application/json',
    url: "laboratory.php",
    data: JSON.stringify(object), // using stringify
    success: function(response) {
       console.log(response);
    }
});
于 2013-10-10T19:43:58.527 回答
1

这就是问题所在。将您的对象数组传递给$.param()(这是 jQuery 在内部使用data:的不是字符串)导致"undefined=undefined&undefined=undefined"这正是您从 php.ini 得到的结果。您的数组只是采用 jQuery 无法理解的格式。因为你真正想要发送的是 json,所以不要使用$.parseJSON,因为它会将你的 json 变成一个数组,而你真正想要的只是一个字符串。

//var object = $.parseJSON(data);

$.ajax({
    type: "POST",
    url: "laboratory.php",
    data: data,
    success: function(response) {
        console.log(response);
    }
});
于 2013-10-10T19:41:51.267 回答
0

对于多个数据,我认为 getJSON 更好:

$.getJSON('laboratory.php', function(json) {
            $.each(json, function(key, val) {
            //Getting the value of id
            val["ID"];
            //Getting the value of name
            val["NAME"];
             //DO whatever u want.
            });
});
于 2013-10-10T19:38:21.010 回答