我想用jquery和json向我的php发送几个数组,我该怎么做?
我正在使用:
$.ajax(
{
url: "script.php",
type: "POST",
data: ???,
dataType: "html",
success: function(tablehtml){
alert(tablehtml);
}
});
典型的我想发送两个数组,然后php站点会生成一个html表。
例如:我想要了解["Tim", "Alan", "Kate"]
["June", "July", "August"]
的相关信息
我希望在我的php脚本中使用json_decode,但是如何打包并发送这两个数组呢? :d
答案 0 :(得分:2)
您不一定需要在服务器端解码json。假设你有:
var months = ["June", "July", "August"];
var names = ["Tim", "Alan", "Kate"];
然后你可以使用$.param来创建它们的序列化表示,适合作为查询字符串发送,如下所示:
$.ajax(
{
url: "script.php",
type: "POST",
data: $.param( { names: names, months: months } ),
dataType: "html",
success: function(tablehtml){
alert(tablehtml);
}
});
从PHP中,你会看到两个带有'months'和'names'键的数组,所以,例如,你可以像这样循环它们:
foreach($_POST['names'] as $name) {
echo 'Name is: ' . $name . '<br />';
}
答案 1 :(得分:1)
You can use JSON.stringify()
,像这样:
$.ajax({
url: "script.php",
type: "POST",
data: JSON.stringify({users: usersArray, months: monthsArray}),
dataType: "html",
success: function(tablehtml){
alert(tablehtml);
}
});
在这种情况下,usersArray
和monthsArray
只是现有数组的变量名。在PHP反面反序列化时,您只需查找users
和months
属性。
对于本机不支持JSON
的旧版浏览器(IE <8),只需include json2.js
,它就会添加支持......以上内容仍然有用。
答案 2 :(得分:1)
假设您的数组非常简单,那么在不使用其他库的情况下构建有效的JSON字符串并不是很困难:
var json = '{"users":["'+users.join('","')+'"],"months":["'+months.join('","')+'"]}';
$.ajax({
url: "script.php",
type: "POST",
data: json,
dataType: "html",
success: function(tablehtml) {
alert(tablehtml);
}
});
答案 3 :(得分:0)
发送如下数据:
$.ajax(
{
url: "script.php",
type: "POST",
data:usersArray+'-|-'+monthsArray,
dataType: "html",
success: function(tablehtml){
alert(tablehtml);
}
});
在这种情况下,usersArray和monthsArray只是现有JSON数组的变量名。
然后在php中
爆炸该字符串$arr = explode('-|-',$_REQUEST['data'])
然后
$userArray = json_decode($arr[0])
$monthsArray = json_decode($arr[1])
我在我的项目中完成了这项工作并且运行良好
答案 4 :(得分:0)
你应该能够使用JSON.stringify(在json网站上)对你的javascript数组进行字符串化(序列化一个值),并像这样发送它:
data:"myData="+JSON.stringify(myVar),
您将在$ _POST ['myData']和json_decode中检索此值。