Javascript: отправить объект JSON с помощью Ajax?

97

Возможно ли это?

xmlHttp.send({
    "test" : "1",
    "test2" : "2",
});

Возможно, с: заголовком с content type: application/json?:

xmlHttp.setRequestHeader('Content-Type', 'application/json')

В противном случае я могу использовать:

xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')

а затем JSON.stringify объект JSON и отправить его в параметр, но было бы здорово отправить его таким образом, если это возможно.

Теги:
header
request

2 ответа

235
Лучший ответ

@mellamokb Ваш ответ будет генерировать простые пары ключей/значений post data с использованием типа mime типа application/x-www-form-urlencoded

@CIRK

Если вы хотите опубликовать JSON, вы можете сделать это

$.post("test.php", { json_string:JSON.stringify({name:"John", time:"2pm"}) });

или

(не используя здесь jQuery)

var xmlhttp = new XMLHttpRequest();   // new HttpRequest instance 
xmlhttp.open("POST", "/json-handler");
xmlhttp.setRequestHeader("Content-Type", "application/json");
xmlhttp.send(JSON.stringify({name:"John Rambo", time:"2pm"}));
  • 2
    но человек, я могу использовать content-type: application/x-www-form-urlencoded если я использую stringify, то какой смысл использовать application/json ? :)
  • 4
    @CIRK: что это значит? Параметр типа содержимого является абсолютно произвольным, если только сервер не обрабатывает один или другой специально. Это просто данные, текущие взад и вперед в конце дня.
Показать ещё 9 комментариев
26

Если вы не используете jQuery, пожалуйста, убедитесь, что:

var json_upload = "json_name=" + JSON.stringify({name:"John Rambo", time:"2pm"});
var xmlhttp = new XMLHttpRequest();   // new HttpRequest instance 
xmlhttp.open("POST", "/file.php");
xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlhttp.send(json_upload);

И для конца приема php:

 $_POST['json_name'] 
  • 0
    Не можете использовать это напрямую?
  • 6
    Я не думаю, что это отвечает на заданный вопрос. Я полагаю, что разработчик хочет отправить BLOB-объект JSON в PHP как Content-Type: application / json, а не в оболочке с кодировкой urlencoded.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню