繁体   English   中英

如何通过ajax发送js数组?

[英]How to send js array via ajax?

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

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

以下是一些案例特定示例。 'data'保存您发送的内容。

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

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

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

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

我只能发送字符串或数值

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

如何发送数组?

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

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

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

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

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

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

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

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

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

有关更多信息,请参见http://api.jquery.com/jQuery.post/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM