Отправьте JSON на сервер с помощью jQuery - PullRequest
4 голосов
/ 07 ноября 2010

Мне нужно отправить массив идентификаторов на мою серверную сторону в виде объекта JSON. Я использую раскрывающийся список, в котором можно выбрать несколько значений для выполнения действий с ними.

Чтобы получить их в массиве, я использовал:

var selectedArray = [];

            var selectObj = document.getElementById('addedList');
            var i=0;
            var count=0;
            for(i=0;i<selectObj.options.length;i++){
                selectedArray[count] = selectObj.options[i].value;
                count++;
            }

Теперь вопрос в том, что мне нужно получить эти идентификаторы на сервер.Я всегда думал о том, чтобы отправить его как объект JSON, так как он имеет переменное количество параметров.Насколько я узнал, вы можете конвертировать JS-объект в JSON.

Теперь у меня есть несколько вопросов:

Не могли бы вы дать мне пример того, какпреобразовать это?Кажется, существует миллион путей, один из которых JSON.stringify(jsObj);.Мой объект просто состоит из массива значений.Насколько я знаю, это будет пример:

{ array : ["value1","value2","value3"] }

Другой вопрос: как я могу отправить это с помощью jQuery?Могу ли я отправить объект JSON на сервер, используя $ .getJSON?(Это использует $ .GET под капотом), или мне нужно использовать $ .POST?

Сейчас я только что пытался, но не могу вытащить это ...

$. Код getJSON

        $.getJSON("removerequest.htm",{ ids: JSON.stringify(selectedArray) }, function(data){
            $('#removerequestdiv').text('');

            $('#removerequestdiv').append('<select name="addedList">');
            for(var index in data){
                $('#removerequestdiv').append('<option value="' + data[index].id + '">' + data[index].voornaam + data[index].familienaam + '</option>');
            }
            $('#removerequestdiv').append('</select>');
        });

1 Ответ

15 голосов
/ 07 ноября 2010

Подпрограмма $.getJSON() предназначена для выборки JSON-кодированного контента с сервера. Ваша проблема в обратном: вы хотите отправить на сервер.

Вы должны понимать терминологию здесь. На самом деле в Javascript нет такого понятия, как «объект JSON». Это просто какой-то объект Javascript, и в этом нет ничего особенного. То, что вы хотите сделать, это сериализировать объект Javascript в одну строку . Эта строка является вашим параметром, который вы отправите на сервер, и сервер десериализует эту строку обратно в объект (в контексте любого языка, который использует код вашего сервера).

Таким образом, когда вы звоните JSON.stringify(obj), вы получаете только строку. Передача такой строки обратно на сервер ничем не отличается от передачи любой другой строки; это просто параметр. Используйте $.post(), чтобы опубликовать его, или вы можете просто вставить его в значение простого элемента ввода формы и опубликовать форму по старинке.

...