通过AJAX发送多个JSON对象/jQuery返回一个";“未定义”;数组(PHP) 目标
使用jQuery通过通过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
$.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);
}
});