如何通过ajax发送js数组?

时间:2009-11-07 13:14:18

标签: javascript ajax arrays

我只能发送字符串或数值,如何发送数组?

4 个答案:

答案 0 :(得分:3)

你可能会得到一些答案,都说“JSON”。

以下是一些案例特定示例。 “数据”包含您发送的内容。

var numArray = [17, 42, 23];
data = '[' + numArray + ']';

var strArray = ['foo', 'bar', 'baz'];
data = '["' + numArray.join('", "') + '"]';

对于一般情况,使用递归编码对象到JSON的函数。如果你真的想要我,我会发布一个示例实现,但这是一个有趣的项目,所以你可能想尝试一下。如果您使用的是Javascript库,它可能拥有自己的JSON编码器(例如jQuery的serializeArray)。

答案 1 :(得分:1)

javascript中没有内置的JSON序列化程序,因此您需要使用库。一个好的是json2.js

以下是一个示例:

// suppose you have an array of some objects:
var array = [{ prop1: 'value1', prop2: 10 }, { prop1: 'value2', prop2: 20 }];
// convert it to json string:
var jsonString = JSON.stringify(array);
// TODO: send the jsonString variable as a parameter in an ajax request
// On the server side you will need a JSON deserializer
// to convert values back to an array of objects

答案 2 :(得分:0)

  

我只能发送字符串或数值

实际上你只能发送字符串。当你包含一个数字时,它只是变成一个字符串;如果需要,可以由服务器端脚本将其解析为数字。

  

如何发送数组?

发送多个值的本机HTML表单方式是使用多个输入。您可以通过多次包含相同的命名参数来重现此操作。发送[1,2,3]

http://www.example.com/ajax.script?a=1&a=2&a=3

可以在AJAX帖子请求中发送相同的多参数实例查询字符串。

如果您使用更高级别的框架来创建表单编码字符串,则它取决于框架如何接受多个参数实例。例如,使用jQuery,您可以发布像{a: [1,2,3]}这样的对象。

另一种方法是忘记标准的HTML表单编码,并以您喜欢的任何特殊编码传递所有值,以便保留数据类型和结构。通常这将是JavaScript值文字(JSON):

http://www.example.com/ajax.script?a=%5B1%2C2%2C3%D

(即[1,2,3],URL编码。)然后,您需要在服务器上使用JSON解析器来重新创建原生数组值。

答案 3 :(得分:0)

您实际上可以以更清晰的方式发送数组,而不是尝试编码JSON。 例如,这可行

$.post("yourapp.php", { 'data[]': ["iphone", "galaxy"] });

有关详情,请参阅http://api.jquery.com/jQuery.post/

相关问题