Разница между $.почта и.$ "Аякс"?
любопытно, если кто-нибудь знает, в чем разница в отношении параметра данных.
у меня есть $.post метод, который принимает $('#myform').serialize() как мои данные param и работает.
если я попробую то же самое через $.ajax() подход, он не работает, как мои данные param не кажется правильным.
кто-нибудь знает разницу и то, что я мог бы использовать вместо .serialize?
6 ответов:
этот пост будет полезен для вас.
короче следующее :
$.post( "/ajax", {"data" : json })эквивалентно :
$.ajax({ type: "POST", url: "/ajax", data: {"data": json} });
проблема тут не в том
$.ajax()не работает, это потому, что вы не установили параметр type в запросе Ajax, и по умолчанию он соответствует запросу GET. Данные отправляются через строку запроса для get, и если ваш сервер ожидает их в качестве параметров post, он не будет их читать.
$.postэто просто вызов с$.ajax(), только сtypeset. Читайте docs и вы увидите, что$.ajax()по умолчанию GET, как я уже упоминал выше.если вы идете к jQuery.пост страница в документах jQuery показывает вам $.AJAX-запрос с набором типов. Еще раз прочитайте документы.
после перечитывания некоторых онлайн-документации, я решил придерживаться $.сообщение более $.Аякс.
долларов.параметр данных метода ajax делает что-то другое, чем $.метод POST, а не уверен, что именно, но есть разница.
единственная причина, по которой я хотел использовать $.ajax-это потому, что я хотел иметь возможность обрабатывать события и не понимал, что могу сделать это с помощью $.должность.
вот что я закончил с
function GetSearchItems() { var url = '@Url.Action("GetShopSearchResults", "Shop", New With {.area = "Shop"})'; var data = $("#ShopPane").serialize(); // Clear container $('#shopResultsContainer').html(''); // Retrieve data from action method var jqxhr = $.post(url, data); // Handle results jqxhr.success(function (result) { //alert("ajax success"); $('#shopResultsContainer').html(result.ViewMarkup); }); jqxhr.error(function () { //alert("ajax error"); }); jqxhr.complete(function () { //alert("ajax complete"); }); // Show results container $("#shopResultsContainer").slideDown('slow'); }
вы указываете это в качестве параметра данных.
$.post- это просто сокращение для$.ajaxкоторый ожидает следующее.$.ajax({ type : 'POST', url : url, data : data, success : success, dataType : dataType });
просто в качестве дополнения, в принятом ответе, упоминается, что"долларов.параметр данных метода ajax делает что-то другое, чем $.метод post делает, не уверен, что именно, но есть разница"
пожалуйста, попробуйте использовать :
{ ... data: JSON.stringify(yourJsonData), ... }иначе объект JSON get вставляется в полезную нагрузку в виде строки с кодировкой url.
Comments