Отправка массива информации - PullRequest
3 голосов
/ 15 декабря 2010

Я хотел бы отправить пару массивов на мой php с помощью jquery и json, как мне это сделать?

Я работаю с:

$.ajax(
{
url: "script.php",
type: "POST",
data: ???,
dataType: "html",
success: function(tablehtml){
alert(tablehtml);
}
});

Как правило, я хочу отправить два массива, и сайт php создаст HTML-таблицу.

Например: я хочу получить информацию о пользователях ["Tim", "Alan", "Kate"] за месяцы ["June", "July", "August"]

Я ожидаю json_decode в моем php-скрипте, но как мне упаковать и отправить два массива? : D

Ответы [ 5 ]

2 голосов
/ 15 декабря 2010

Вам не обязательно декодировать JSON на стороне сервера.Предположим, у вас есть:

var months = ["June", "July", "August"];
var names = ["Tim", "Alan", "Kate"];

Затем вы можете использовать $. Param для создания их сериализованного представления, пригодного для отправки в виде строки запроса, например:

$.ajax(
{
    url: "script.php",
    type: "POST",
    data: $.param( { names: names, months: months } ),
    dataType: "html",
    success: function(tablehtml){
        alert(tablehtml);
    }
});

В PHP вы увидите два массива с ключами 'month' и 'names', поэтому, например, вы можете зациклить их следующим образом:

foreach($_POST['names'] as $name) {
    echo 'Name is: ' . $name . '<br />'; 
}
1 голос
/ 15 декабря 2010

Предполагая, что ваши массивы так просты, не составит труда создать допустимую строку JSON без использования другой библиотеки:

var json = '{"users":["'+users.join('","')+'"],"months":["'+months.join('","')+'"]}';

$.ajax({
    url: "script.php",
    type: "POST",
    data: json,
    dataType: "html",
    success: function(tablehtml) {
        alert(tablehtml);
    }
});
1 голос
/ 15 декабря 2010

Вы можете использовать JSON.stringify(), например:

$.ajax({
  url: "script.php",
  type: "POST",
  data: JSON.stringify({users: usersArray, months: monthsArray}),
  dataType: "html",
  success: function(tablehtml){
    alert(tablehtml);
  }
});

В этом случае usersArray и monthsArray - это просто имена переменных для уже существующих массивов.На стороне PHP при десериализации ответа вы просто ищете свойства users и months.

Для более старых браузеров, которые изначально не поддерживают JSON (IE <8),просто <a href="http://www.json.org/js.html" rel="nofollow"> включите json2.js, и это добавит поддержку ... и выше все равно будет работать.

0 голосов
/ 15 декабря 2010

Вы должны иметь возможность структурировать свой массив javascript (сериализовать значение), используя JSON.stringify (на веб-сайте json), и отправить его следующим образом:

data:"myData="+JSON.stringify(myVar),

Вы получите это значение в$ _POST ['myData'] и json_decode его.

0 голосов
/ 15 декабря 2010

отправьте данные следующим образом:

$.ajax(
{
url: "script.php",
type: "POST",
data:usersArray+'-|-'+monthsArray,
dataType: "html",
success: function(tablehtml){
alert(tablehtml);
}
});

В этом случае usersArray и monthsArray - это просто имена переменных для уже существующих массивов JSON.

, а затем разбейте эту строкуphp

$arr = explode('-|-',$_REQUEST['data'])

затем

$userArray = json_decode($arr[0])

$monthsArray = json_decode($arr[1])

Я сделал это в моем проекте, и он работает нормально

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...