提问者:小点点

如何使用XMLHttpRequest将数组发送到服务器


正如我所知,使用ajax可以将数据发送到服务器,但我对使用XMLHttpRequest发送数组感到困惑,而不是像jQuery这样的任何库。我的问题是,是否可以发送数组到php使用XMLHttpRequestjQuery如何发送数组到php,我的意思是jQuery做任何额外的工作发送数组到服务器(PHP$_POST)?


共3个答案

匿名用户

你只能发送一串字节。“发送数组”是通过序列化(对象的字符串表示)数组并发送来完成的。然后,服务器将解析字符串并从中重新构建内存对象。

因此,将[1,2,3]发送到PHP可能会发生如下情况:

var a = [1,2,3],
    xmlhttp = new XMLHttpRequest;

xmlhttp.open( "POST", "test.php" );
xmlhttp.setRequestHeader( "Content-Type", "application/json" );
xmlhttp.send( '[1,2,3]' ); //Note that it's a string. 
                          //This manual step could have been replaced with JSON.stringify(a)

测验php:

$data = file_get_contents( "php://input" ); //$data is now the string '[1,2,3]';

$data = json_decode( $data ); //$data is now a php array array(1,2,3)

顺便说一句,使用jQuery,您只需执行以下操作:

$.post( "test.php", JSON.stringify(a) );

匿名用户

这取决于您选择打包数据结构的协议。最常用的两种是XML和JSON。两者都有声明数组的方法:

JSON:[“一件事”,“另一件事]

XML:

两者都不会占用服务器任何重要的额外工作。在许多情况下,它实际上会减少工作,因为您不需要使用命名约定来区分它们。

匿名用户

您希望发送一个jSon对象(可以是数组)。如果您使用的是php,请使用XMLHttpRequest w/o jQuery将JSON数据发送到php。

关于jSon的更多信息:http://json.org/

jQuery json示例:JQuery和JSON