是否将JavaScript数组作为JSON值发送?

是否将JavaScript数组作为JSON值发送?,javascript,ajax,json,post,arrays,Javascript,Ajax,Json,Post,Arrays,如何在AJAX请求中将JavaScript数组作为JSON变量发送?如果您没有使用JavaScript库(jQuery、prototype.js等)来为您执行此操作,则始终可以使用对数组进行编码并将其作为AJAX请求的一部分发送: 还有太多其他编码器,甚至JQuery和Mootools的插件:D这需要将javascript数组序列化为字符串,这可以使用JSON对象轻松完成 var myArray = [1, 2, 3]; var myJson = JSON.stringify(myArray)

如何在AJAX请求中将JavaScript数组作为JSON变量发送?

如果您没有使用JavaScript库(jQuery、prototype.js等)来为您执行此操作,则始终可以使用

对数组进行编码并将其作为AJAX请求的一部分发送:


还有太多其他编码器,甚至JQuery和Mootools的插件:D

这需要将javascript数组序列化为字符串,这可以使用JSON对象轻松完成

var myArray = [1, 2, 3];
var myJson = JSON.stringify(myArray); // "[1,2,3]"
....
xhr.send({
    data:{
        param: myJson
    }
});
由于JSON对象不存在于较旧的浏览器中,所以应该包括Douglas Crockfords库

如果您已经依赖于一些包含编码/序列化方法的库,那么您可以改用它。例如,ExtJs具有
Ext.encode

以下是一个示例:

 var arr = [1, 2, 3];
 $.ajax({
        url: "get.php",
        type: "POST",
        data: {ids:arr},
        dataType: "json",
        async: false,
        success: function(data){
            alert(data);
        }
    });
在get.php中:

echo json_encode($_POST['ids']);

数组将使用{ids:arr}转换为对象,传递对象本身并让jQuery进行查询字符串格式化。

因此它所做的一切都会创建一个字符串:“[1,2,3]”。。。但是,如果我想发送一个以[]开头和结尾的字符串,服务器端能分辨出两者的区别吗?你不是说JSON吗?根据定义,这只是字符串内容的格式。如果您实际上想要向服务器发送一个数组,那么这是另一个问题。尽管如此,如果数组中的一个元素包含[or],那么它将通过序列化方法自动转义。但是,当我用$val[0]检查接收到的值时,它会给出:“[”。在使用json数组之前,我需要在服务器端处理它吗?$val仍然是一个字符串-如果您希望它作为数组(带有某种类型的项)然后你需要对它进行解码。我猜你是在使用php,所以你可以尝试json_解码。你需要记住的一件事是,在浏览器中你有ECMAScript(javascript),在服务器上你有php(我猜)。这些是不同的语言,因此有不同的类型。JSON是一种双方都能理解的“语言”,但只支持每种语言的子集。因此,只支持字符串、数字和布尔值等原语以及基本数组、索引和关联(文字对象表示法)。