Отправить JSON с AJAX - PullRequest
       22

Отправить JSON с AJAX

4 голосов
/ 27 августа 2009

Что-нибудь особенное, что я должен сделать с объектом JSON, прежде чем отправить его с помощью AJAX? Мой код выглядит так:

runAjax(JSON.stringify(data));

}

function runAjax(JSONstring)
{
    ajax = getHTTPObject();
    var params = "?data=" + JSONstring;
    ajax.open("POST", "createtrip.php", true);
    ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    ajax.setRequestHeader("Content-length", params.length);
    ajax.setRequestHeader("Connection", "close");
    ajax.onreadystatechange = serverSpeaks;
    ajax.send(params);
}

В данный момент сервер не получает данные. Я получаю нулевое значение на стороне сервера, но на стороне клиента установлена ​​JSONString. Я что-то не так делаю?

Ответы [ 3 ]

5 голосов
/ 27 августа 2009

Вы отправляете данные через POST, вам не нужен символ '?' в начале переменной params, также я рекомендую вам кодировать JSONString, чтобы избежать проблем.

Обратите внимание, что вам не хватает оператора var для переменной ajax, это объявляет его глобально (window.ajax), и я думаю, что вам оно не нужно глобально ...

function runAjax(JSONstring) {
  var params = "data=" + encodeURIComponent(JSONstring), 
      ajax = getHTTPObject();

  ajax.open("POST", "createtrip.php", true);
  ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  ajax.setRequestHeader("Content-length", params.length);
  ajax.setRequestHeader("Connection", "close");
  ajax.onreadystatechange = serverSpeaks;
  ajax.send(params);
}
0 голосов
/ 27 августа 2009

Сервер может работать с телом сообщения, например name1 = value & name2 = value2.

Если вы используете PHP, вы можете получить строку json:

$data = file_get_contents("php://input");
0 голосов
/ 27 августа 2009

Вы должны пройти через кодировщик для правильной отправки данных. Конечно, сначала вы должны увидеть, что переменная data хорошо сформирована как JSON.

lib для кодирования / декодирования

другая ссылка кодирования / декодирования

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