Как отправить массивы с помощью XMLHttpRequest на сервер

как я знаю, используя ajax, вы можете отправлять данные на сервер, но я запутался в отправке массива для публикации с помощью XMLHttpRequest не любая библиотека, как jQuery. Мой вопрос в том, можно ли отправить массив в php С помощью XMLHttpRequest и как jQuery отправить массив на 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)

Это зависит от протокола, который вы выберете для упаковки структуры данных. Наиболее часто используются 2 XML и JSON. У обоих есть способы объявить массив:

в формате JSON: ['one thing', 'another thing']

XML:<things><thing name='one thing' /><thing name='another thing' /></things>

и ни один из них не будет принимать какой-либо значительной дополнительной работы сервером. Во многих случаях это фактически сократит работу, так как вам не нужно использовать соглашение об именах, чтобы различать их.


вы хотите отправить объект jSon (который может быть массивом). Проверьте это, если вы используете PHP отправить данные JSON на PHP с помощью XMLHttpRequest без jQuery.

подробнее о jSon:http://json.org/

jQuery с помощью JSON пример: JQuery и JSON