使用jQuery在ajax请求中传递多维数组

时间:2010-08-05 12:44:54

标签: jquery

如何在url中为ajax发送二维数组

喜欢:

MultiArray[0][1]="..."
MultiArray[0][2]="..."
.
.
MultiArray[n][1]="..."
MultiArray[n][2]="..."

从ajax(javascript)到php的代码 像

<a href="test.php?t=MultiArray">...</a>

请帮助

3 个答案:

答案 0 :(得分:1)

您无法在URL中发送对象,只能发送字符串值。

您可以创建一个表示锯齿状数组的值(这是因为Javascript没有多维数组),例如:

test.php?t=[[1,2,3],[4,5,6],[7,8,9]]

这当然必须在服务器端解析。

您可能希望查看JSON数据格式。 IIRC jQuery可以创建JSON格式,或者至少有一个插件。 PHP中应该有一些可以解析格式的库。

答案 1 :(得分:0)

有很多方法可以解决这个问题。

  • 在自定义数据结构中对客户端数据进行编码,并使用base64对其进行编码并将其作为一个参数发送
  • 如果有限(如10个)行和列,您可以根据自己的喜好进行序列化:?r1c1 = 0&amp; r2c2 = 1等,并在您的php脚本中进行解码。

我会建议第一种选择。

答案 2 :(得分:0)

这是jQuery中真正的Ajax请求。查看$.ajax的数据参数。

should('test paramterized multidimensional object', function() {
   var mDimArray = [];
    mDimArray[0] = [];
    mDimArray[1] = [];

    mDimArray[0][0] = 'data 0';
    mDimArray[0][1] = 'data 1';
    mDimArray[1][0] = 'data 2';
    mDimArray[1][1] = 'data 3';

    jQuery.ajax({
        url:        'test.php'
        ,data:      { mDims: mDimArray }
        ,dataType:  'json'
        ,success:   function(data) {
            if (data.status === "success") {
                ok(true, "Rx Json");                
            }
        }
    });

});

以下是请求中的参数:

mDims[0][]  data 0
mDims[0][]  data 1
mDims[1][]  data 2
mDims[1][]  data 3

查询字符串:

?mDims%5B0%5D%5B%5D=data+0&mDims%5B0%5D%5B%5D=data+1&mDims%5B1%5D%5B%5D=data+2&mDims%5B1%5D%5B%5D=data+3