Отправка объекта Javascript в PHP через Ajax

Я изучаю Ajax по ошибке и ударил стену:

У меня есть массив (если это имеет значение, массив хранит идентификатор номера на основе того, какие флажки проверяются пользователем), который написан в Javascript.

У меня есть функция, которая вызывается, когда пользователь нажимает кнопку «Сохранить». Функция следующая:

function createAmenities() { if (window.XMLHttpRequest) { //code for IE7+, Firefox, Chrome and Opera xmlhttp = new XMLHttpRequest(); } else { //code for IE6, IE5 xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange = function () { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { document.getElementById('message').innerHTML = xmlhttp.responseText; } } var url = "create_amenities.php"; xmlhttp.open("GET", url, true); xmlhttp.send(); } 

Мой вопрос: что я могу добавить в эту функцию, чтобы вытащить массив в скрипт php, который я пытаюсь вызвать ('create_amvents.php')?

Кроме того, следует ли использовать JSON? И если да, то как я могу отправить объект JSON через ajax?

Заранее спасибо.

Если ваш массив имеет более 1 размерности или представляет собой ассоциативный массив, вы должны использовать JSON.

Json превращает полную структуру массива в строку. Эта строка может быть легко отправлена ​​в ваше приложение php и возвращена в массив php.

Дополнительная информация о json: http://www.json.org/js.html

 var my_array = { ... }; var json = JSON.stringify( my_array ); 

В php вы можете декодировать строку с помощью json_decode:

http://www.php.net/manual/en/function.json-decode.php

 var_dump(json_decode($json)); 

encodeURIComponent('keyname[]') + '=' + encodeURIComponent(theArray[i]) + '&' массив и добавьте в encodeURIComponent('keyname[]') + '=' + encodeURIComponent(theArray[i]) + '&' в строку запроса.

Кроме того, следует ли использовать JSON?

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

И если да, то как я могу отправить объект JSON через ajax?

Нет такой вещи, как объект JSON . JSON принимает форму строки, и вы можете включать строки в строки запроса (просто запомните encodeURIComponent ).

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

Лучшим подходом к вашей реальной проблеме было бы представить ваш массив как параметры cgi.

Если флажки находятся в форме, вам нужно сделать очень мало – просто отправьте форму,

  <form><input type=checkbox ...><input type=checkbox ...> $.post("test.php", $("#testform").serialize()); 

См. http://api.jquery.com/jQuery.post/ для получения более подробной информации о том, как это сделать. Ваш список появится в виде массива в PHP.

Или, чтобы увеличить свой собственный пример с чем-то очень простым, сделайте следующее:

  url = url + '?checkboxes=' + checkboxes.join(','); 

Теперь просто разделите его на PHP, и у вас есть его!