Разница между $.почта и.$ "Аякс"?


любопытно, если кто-нибудь знает, в чем разница в отношении параметра данных.

у меня есть $.post метод, который принимает $('#myform').serialize() как мои данные param и работает.

если я попробую то же самое через $.ajax() подход, он не работает, как мои данные param не кажется правильным.

кто-нибудь знает разницу и то, что я мог бы использовать вместо .serialize?

6   51   2012-10-10 17:06:45

6 ответов:

этот пост будет полезен для вас.

Ссылка На Форум

короче следующее :

$.post( "/ajax", {"data" : json }) 

эквивалентно :

$.ajax({ 
  type: "POST", 
  url: "/ajax", 
  data: {"data": json} 
}); 

проблема тут не в том $.ajax() не работает, это потому, что вы не установили параметр type в запросе Ajax, и по умолчанию он соответствует запросу GET. Данные отправляются через строку запроса для get, и если ваш сервер ожидает их в качестве параметров post, он не будет их читать.

$.post это просто вызов с $.ajax(), только с type set. Читайте 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.

на $.ajax вы можете синхронизировать, но это невозможно в