通过AJAX发送多个JSON对象/jQuery返回一个";“未定义”;数组(PHP) 目标

通过AJAX发送多个JSON对象/jQuery返回一个";“未定义”;数组(PHP) 目标,php,jquery,json,Php,Jquery,Json,使用jQuery通过$.ajax()发送[{“ID”:1,“Name”:“XBOX”},{“ID”:2,“Name”:“Playstation 3”}] 问题 我有这个: [...] var object = $.parseJSON(data); $.ajax({ type: "POST", url: "laboratory.php", data: object, success: function(response) { console.lo

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

问题 我有这个:

[...]

var object = $.parseJSON(data);

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

<?php print_r($_REQUEST); ?>
这就是
数据
的变量的含义:

[{"ID": 1, "Name": "XBOX"}, {"ID": 2, "Name": "Playstation 3"}]
这就是
object
的意思(通过Chrome的控制台):


有人能给我一个主意吗?

对于多个数据,我认为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.
            });
});

对于多个数据,我认为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.
            });
});

问题出在这里。将对象数组传递给
$.param()
(这是jQuery在内部对
数据执行的操作:
它不是字符串)会导致
“undefined=undefined&undefined=undefined”
,这正是您从php得到的结果。数组的格式是jQuery无法理解的。因为您实际想要发送的是json,所以不要使用
$.parseJSON
,因为它会将json转换为一个数组,而您真正想要的只是一个字符串

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

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

问题出在这里。将对象数组传递给
$.param()
(这是jQuery在内部对
数据执行的操作:
它不是字符串)会导致
“undefined=undefined&undefined=undefined”
,这正是您从php得到的结果。数组的格式是jQuery无法理解的。因为您实际想要发送的是json,所以不要使用
$.parseJSON
,因为它会将json转换为一个数组,而您真正想要的只是一个字符串

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

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

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


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



您正在发布数据,是否查看了$u POST结构?由于您正在向jquery传递一个对象数组,jquery将尝试将其转换为一个表单参数字符串?如果是,那么我已经做了,并且返回的是相同的。您到底想向服务器发送什么?json或post参数如果您正在发布数据,是否查看了$u post结构?由于您正在向jquery传递一个对象数组,jquery将尝试将其转换为一个表单参数字符串?如果是,那么我已经做了,并且返回的是相同的。您到底想向服务器发送什么?json或post参数“PHP代码”是一个简单的多维数组,带有
utf8\u编码(json\u encode($array))
。这是
数据
。我在发布后实现了,对此表示抱歉。我也遇到了同样的问题,所以我决定尝试getJSON。“PHP代码”是一个简单的多维数组,带有
utf8\u编码(json\u编码($array))
。这是
数据
。我在发布后实现了,对此表示抱歉。我也遇到了同样的问题,所以我决定尝试getJSON。Kevin,我的
$\u请求现在是空的。奇怪。。。它应该是一个字符串。。。不过,您可以通过执行
data:{json:data}
来强制它位于
$\u POST
您将在
$\u POST[“json”]
上看到它,您确定
数据是您认为的吗?我看到了,但是如果您
console.log(data)
,它会给您期望的json字符串吗?这是字符串:
[{ID:1,“Name”:“XBOX},{“ID”:2,“Name”:“Playstation 3”}]
这是复制粘贴错误吗?
“XBOX},
?这也是你的问题。但是,真的不应该影响结果,因为到目前为止,我们除了将其视为字符串外,没有做任何其他事情。我的
$\u请求
现在是空的,凯文。奇怪的是……它应该是字符串……不过,你可以通过执行
数据:{json:data}来强制它在
$\u POST
你可以在
$\u POST[“json”]
上看到它,你确定
数据是你所想的吗?我看到了,但是如果你
控制台.log(data)
,它会给你你想要的json字符串吗?这是字符串:
[{“ID”:1,“Name”:“XBOX},{“ID”:2,“Name”:“Playstation 3”}
这是复制粘贴错误吗?
“XBOX},
?你的问题也是这样。但是,我们真的不应该影响结果,因为到目前为止,我们除了将其作为字符串处理外,没有做任何其他事情。它很有效!但是,如果说
数据
参数可以是一个普通对象,那么对JSON对象进行字符串化就有点奇怪了。。。也许是jQuery版本的问题?很高兴您能正常工作!:)也许jQuery
$.parseJSON()
方法有问题,也许它没有传递一个普通的javascript对象?它可以工作!但是,如果说
数据
参数可以是一个普通对象,那么对JSON对象进行字符串化就有点奇怪了。。。也许是jQuery版本的问题?很高兴您能正常工作!:)也许jQuery
$.parseJSON()
方法有问题,也许它没有传递一个普通的javascript对象?
$.ajax({
    type: "POST",
    contentType: 'application/json',
    url: "laboratory.php",
    data: JSON.stringify(object), // using stringify
    success: function(response) {
       console.log(response);
    }
});