Отправить массив JavaScript в виде значения JSON? - PullRequest
8 голосов
/ 12 мая 2010

Как я могу отправить массив JavaScript в виде переменной JSON в моем запросе AJAX?

Ответы [ 4 ]

19 голосов
/ 12 мая 2010

Это требует, чтобы вы сериализовали массив javascript в строку, что легко сделать с помощью объекта JSON.

var myArray = [1, 2, 3];
var myJson = JSON.stringify(myArray); // "[1,2,3]"
....
xhr.send({
    data:{
        param: myJson
    }
});

Поскольку JSON-объект отсутствует в старых браузерах, вам следует включить Дугласа Крокфордса json2 library

Если вы уже полагаетесь на какую-то библиотеку, которая включает методы для кодирования / сериализации, вы можете использовать ее вместо этого. Например. ExtJs имеет Ext.encode

1 голос
/ 27 марта 2014

Вот пример:

 var arr = [1, 2, 3];
 $.ajax({
        url: "get.php",
        type: "POST",
        data: {ids:arr},
        dataType: "json",
        async: false,
        success: function(data){
            alert(data);
        }
    });

В get.php:

echo json_encode($_POST['ids']);

Массив будет преобразован в объект с помощью {ids: arr}, передаст сам объект и позволит jQuery форматировать строку запроса.

1 голос
/ 12 мая 2010

Просто закодируйте массив и отправьте его как часть вашего запроса AJAX:

http://www.openjs.com/scripts/data/json_encode.php

Слишком много других кодировщиков или даже плагинов для JQuery и Mootools: D

1 голос
/ 12 мая 2010

Если вы не используете библиотеку javascript (jQuery, prototype.js и т. Д.), Которая сделает это за вас, вы всегда можете использовать пример кода из json.org

...