Передача массива JavaScript в PHP через jQuery $.Аякс
Я хочу манипулировать массивом JavaScript в PHP. Можно ли сделать что-то подобное?
$.ajax({
type: "POST",
url: "tourFinderFunctions.php",
data: "activitiesArray="+activities,
success: function() {
$("#lengthQuestion").fadeOut('slow');
}
});
Activities-это одномерный массив, например:
var activities = ['Location Zero', 'Location One', 'Location Two'];
скрипт не завершается, когда я пытаюсь это сделать... Как я могу это исправить?
8 ответов:
data: { activitiesArray: activities },вот именно! Теперь вы можете получить к нему доступ на PHP:
<?php $myArray = $_REQUEST['activitiesArray']; ?>
вы хотите, чтобы кодировать массив как JSON перед отправкой его, или вы просто получите какой-то мусор на другом конце.
Так как все, что вы отправляете это массив, вы можете просто сделать:
data: { activities: activities }который автоматически преобразует массив для вас.
посмотреть здесь для сведения.
вам нужно превратить это в строку. Это можно сделать с помощью метода stringify в библиотеке JSON2.
код будет выглядеть примерно так:
var myJSONText = JSON.stringify(myObject);так
['Location Zero', 'Location One', 'Location Two'];будет:
"['Location Zero', 'Location One', 'Location Two']"вам придется обратиться к гуру PHP о том, как справиться с этим на сервере. Я думаю, что другие ответы здесь интимные решение.
данные могут быть возвращены с сервера подобным образом. То есть вы можете превратить его обратно в объект.
var myObject = JSON.parse(myJSONString);
Я знаю, что это может быть слишком поздно, чтобы ответить на это, но это сработало для меня в большой путь:
преобразовать в строки вашего объекта JavaScript (JSON) при
var st = JSON.stringify(your_object);передайте свои данные POST Как "строку" (возможно, используя jQuery:
$.post('foo.php',{data:st},function(data){... });- Декодируйте свои данные на стороне сервера обработки:
$data = json_decode($_POST['data']);вот именно... вы можете свободно использовать свои данные.
обрабатываются многомерные массивы и одиночные массивы как обычные массивы. Чтобы получить к ним доступ, просто сделайте нормальный
$foo[4].ассоциативные массивы (объекты javsacript) обрабатываются как объекты php (классы). Чтобы получить к ним доступ, просто сделайте это как классы:
$foo->bar.
используйте функцию сериализации JQuery
http://docs.jquery.com/Ajax/serialize
сериализация используется для подготовки вводимые пользователем данные для публикации в a сервер. Сериализованные данные в стандартный формат совместимость почти со всей стороны сервера языки программирования и рамок.
Я должен быть такой:
$.post(submitAddress, { 'yourArrayName' : javaScriptArrayToSubmitToServer }, function(response, status, xhr) { alert("POST returned: \n" + response + "\n\n"); })
это сработало для меня:
$.ajax({ url:"../messaging/delete.php", type:"POST", data:{messages:selected}, success:function(data){ if(data === "done"){ } info($("#notification"), data); }, beforeSend:function(){ info($("#notification"),"Deleting "+count+" messages"); }, error:function(jqXHR, textStatus, errorMessage){ error($("#notification"),errorMessage); } });и это для вашего PHP:
$messages = $_POST['messages'] foreach($messages as $msg){ echo $msg; }
используйте встроенную в PHP функциональность добавления операнда массива к нужному имени переменной.
если мы добавим значения в массив Javascript следующим образом:
acitivies.push('Location Zero'); acitivies.push('Location One'); acitivies.push('Location Two');Он может быть отправлен на сервер следующим образом:
$.ajax({ type: 'POST', url: 'tourFinderFunctions.php', 'activities[]': activities success: function() { $('#lengthQuestion').fadeOut('slow'); } });обратите внимание на кавычки вокруг деятельности[]. Значения будут доступны следующим образом:
$_POST['activities'][0] == 'Location Zero'; $_POST['activities'][1] == 'Location One'; $_POST['activities'][2] == 'Location Two';
Comments