$.post () не отправляет данные как json, а как x-www-form-urlencoded
Это очень странно. У меня несколько $.post()
в коде, но есть один не знаю, почему отправляет параметры json как x-www-form-urlencoded
вместо этого и поэтому не работает.
вот код:
$.post("/Route/SaveTransportProperties", { properties: JSON.stringify(propArray), currTravelBox: JSON.stringify(travelBoxObj), accessToken: getAccessToken()}, function(data)
{
//DO STUFF
});
XHR выглядит так в Firefox:
любые идеи, почему это происходит? Я также принудительно ввел тип как "json", но тоже не работает.
4 ответов
Если вы хотите отправить данные как json, используйте $.функция ajax
вы можете указать тип post и тип данных json.
$.ajax({
url: "mydomain.com/url",
type: "POST",
dataType: "xml/html/script/json", // expected format for response
contentType: "application/json", // send as JSON
data: $.param( $("Element or Expression") ),
complete: function() {
//called when complete
},
success: function() {
//called when successful
},
error: function() {
//called when there is an error
},
});
взято из документации ajax
http://api.jquery.com/jQuery.ajax/
contentTypeString
Default: 'application/x-www-form-urlencoded; charset=UTF-8'
, потому что $.post () для отправки формы-как просит. $.ajax для отправки, что вы хотите. См.contentType
на $.ajax
страница для получения дополнительной информации.
цитата:
при отправке данных на сервер, использовать этот тип контента. По умолчанию используется "application / x-www-form-urlencoded", что в большинстве случаев нормально. Если вы явно передаете тип содержимого в $.ajax () тогда он всегда будет отправлен на сервер (даже если данные не отправляются). Данные всегда будут передаваться на сервер с помощью кодировки UTF-8; вы должны соответствующим образом декодировать это на стороне сервера.
это также работает для меня
$.ajax({
url: "mydomain.com/url",
type: "POST",
dataType: "xml/html/script/json", // expected format for response
contentType: "application/json", // send as JSON
data: JSON.stringify(data),
complete: function() {
//called when complete
},
success: function() {
//called when successful
},
error: function() {
//called when there is an error
},
});