发送信息数组

时间:2010-12-15 12:31:29

标签: jquery ajax json

我想用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

5 个答案:

答案 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);
  }
});

在这种情况下,usersArraymonthsArray只是现有数组的变量名。在PHP反面反序列化时,您只需查找usersmonths属性。

对于本机不支持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中检索此值。