Отправка JSON на сервер - PullRequest
       2

Отправка JSON на сервер

0 голосов
/ 22 января 2011

Как мне это повернуть ...

{ 
  'name': 'John', 
  'surname': 'Smith'
}

... в это?

name=John&surname=Smith

Я пытаюсь отправить JSON на сервер через AJAX

спасибо

Ответы [ 4 ]

2 голосов
/ 22 января 2011

Общая (т.е. без какой-либо JS-инфраструктуры) ...

var o = {'name': 'John', 'surname': 'Smith'};
var q = [];

for (p in o) {
  if (o.hasOwnProperty(p)) {
    q.push( encodeURIComponent(p) + "=" + encodeURIComponent(o[p]) );
  }
}

q = q.join("&"); // "name=John&surname=Smith"

Как уже отмечали в комментариях, это будет работать только для плоских, не вложенных объектов.Для расширенного использования я настоятельно рекомендую выполнить HTTP-пост-операцию и отправить объект без изменений в виде строки JSON.

Все библиотеки JS предоставляют способ преобразования объекта в JSON, и существуют другие способы сериализации объекта, например, собственная реализация Дугласа Крокфорда в http://json.org/js.html.

0 голосов
/ 22 января 2011

Во-первых, вы используете какую-либо библиотеку JavaScript? (JQuery, прототип и т.д ...). Если у вас есть функции, чтобы сделать это где-то там.

В противном случае вы можете использовать что-то вроде:

var urlParams = '?';
var index = 0;
for(var key in obj){
If(index != 0) urlParams += '&';
 urlParams += key + '='+obj[key];
}
0 голосов
/ 22 января 2011

Есть несколько способов сделать это, но, вероятно, самый простой - написать итератор для вашего объекта:

var propstr = "?";
for (prop in jsonCode) {
   if (jsonCode.hasOwnProperty(prop)) {
      propstr += prop + "=" + jsonCode[prop] + "&"
   }
}
0 голосов
/ 22 января 2011
var jsoncode = { 
  'name': 'John',
  'surname': 'Smith'
};
var querystring = 'name=' + encodeURI(jsoncode.name) + '&surname=' + encodeURI(jsoncode.surname);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...