2010-11-07 4 views
4

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

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

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>'); 
     }); 
+0

Возможный дубликат [JQuery: Как установить JSON через Ajax?] (Http://stackoverflow.com/questions/1749272/jquery-how-to-put-json-via-ajax) – Hogan

+0

Вам нужно использовать пост , – Hogan

+0

getJSON только захватывает файл с данными json в нем. Вам нужно использовать какую-то форму сообщения. Theres ajax и пост. Существует также параметр json, который, я считаю, вы можете использовать для отправки данных. не помню, если это используется только для указания, что возвращаемое значение является json-форматом. – Matt

ответ

14

$.getJSON() рутина для Fetching JSON-кодированный содержание от сервер. Ваша проблема противоположна: вы хотите отправить ее на сервер.

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

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

+0

Спасибо, это проясняет многое! Можно ли отправить JSON на сервер, а также получить JSON с $ .post()? – toomuchcs

+0

Ответ, отправленный сервером, передается в функцию обработчика, которую вы передаете '$ .post()', и это может быть все, что вы хотите - это зависит от серверного программного обеспечения.Если ваш сервер готовит ответ и сериализует его как строку, закодированную в JSON, и отправляет ее обратно, ваш код Javascript может просто анализировать его с помощью библиотеки JSON2. – Pointy

+0

Отличный ответ. Четкий и краткий +1 – Matanya

Смежные вопросы