Javascript $.post和$.ajax之间的差异?

Javascript $.post和$.ajax之间的差异?,javascript,jquery,ajax,asp.net-mvc,serialization,Javascript,Jquery,Ajax,Asp.net Mvc,Serialization,好奇是否有人知道数据参数的区别 我有一个$.post方法,该方法将$(“#myform”).serialize()作为我的数据参数并工作 如果我使用$.ajax()方法尝试相同的方法,它将不起作用,因为我的数据参数似乎不正确 有人知道区别吗?我可以用什么来代替上面的。serialize 这概括起来: $.post是使用$.ajax进行post请求的一种简捷方法,因此使用两者之间没有太大区别-它们都可以使用相同的底层代码$.get的工作原理与此类似 -阿德约斯马尼 简言之,这是: $.post(“

好奇是否有人知道数据参数的区别

我有一个
$.post
方法,该方法将
$(“#myform”).serialize()作为我的数据参数并工作

如果我使用
$.ajax()
方法尝试相同的方法,它将不起作用,因为我的数据参数似乎不正确

有人知道区别吗?我可以用什么来代替上面的
。serialize

这概括起来:

$.post
是使用
$.ajax
进行post请求的一种简捷方法,因此使用两者之间没有太大区别-它们都可以使用相同的底层代码
$.get
的工作原理与此类似

-阿德约斯马尼

简言之,这是:

$.post(“/ajax”,{“data”:json})
相当于以下内容:

$.ajax({
类型:“POST”,
url:“/ajax”,
数据:{“数据”:json}
});

这里的问题并不是因为
$.ajax()不起作用,而是因为您没有在ajax请求中设置type参数,它默认为GET请求。数据是通过get的查询字符串发送的,如果后端希望它们作为post参数,则不会读取它们

$.post
只是使用
$.ajax()
调用,只是设置了
类型。阅读本文,您将看到,
$.ajax()
默认为我前面提到的GET


如果转到jQuery文档中的页面,它会显示带有类型集的$.ajax请求。再次阅读文档。

是否将其指定为数据参数
$.post
只是
$.ajax
的简写,它需要以下内容

$.ajax({
    type : 'POST',
    url : url,
    data : data,
    success : success,
    dataType : dataType
});

在重新阅读了一些在线文档之后,我决定继续使用$.post而不是$.ajax

$.ajax方法的数据参数与$.post方法有所不同,不确定具体是什么,但有区别

我想使用$.ajax的唯一原因是因为我想能够处理事件,但没有意识到我可以使用$.post来处理事件

这就是我的结局

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');
}
JQuery 3.x

jqXHR.success()、jqXHR.error()和jqXHR.complete()回调函数 方法从jQuery 3.0开始被删除。您可以使用jqXHR.done(), jqXHR.fail()和jqXHR.always()


$.ajax
中,您可以进行同步,但在
$.post
功能中无法进行同步。同步意味着您可以获得返回的结果

var tmp;
$.ajax({
    'async': false,
    'type': "POST",
    'global': false,
    'dataType': 'html',
    'url': "Your Url",
    'data': {'type': 'data'},
    'success': function (data) {
        tmp = data;
    }
});
alert(tmp);

作为补充,在公认的答案中,提到了“$.ajax方法的数据参数与$.post方法做了一些不同的事情,不确定具体做了什么,但有区别”

请尝试使用:

    { 
        ... 
        data: JSON.stringify(yourJsonData), 
        ... 
    }

否则json对象get将作为url编码字符串插入有效负载。

使用$.ajax,我们可以发出get或POST请求。 使用$.post,我们只能发出post请求。 使用$.get,我们只能发出get请求

$.ajax()    // Performs an async AJAX request
$.get()     // Loads data from a server using an AJAX HTTP GET request
$.post()    // Loads data from a server using an AJAX HTTP POST request

类似的,那不是真的。您可以通过以下方式获得返回结果:
$.post(“您的.php”,函数(数据){u引用**数据**作为您的返回结果})
nagging,这是绝对不正确的信息,不应该有任何投票。$。ajax、$.post和$.get都可以返回结果。@EdDeGagne您无法在post FunctionSync选项之外获得返回响应。据我所见,已不推荐使用post FunctionSync选项。要从ajax调用中获得结果,有更好的方法不会让我们的浏览器无法响应。与使用成功回调类似。“从jQuery 3.0开始,jqXHR.success()、jqXHR.error()和jqXHR.complete()回调方法将被删除。”-非常清楚。这篇帖子是4年前写的。你为什么要撤销我对你答案的补充?丹尼斯,对不起,这完全是错的。我改正了。没问题,只是要求检查我是否做错了什么,或者应该改进我的编辑。祝你一周愉快。
$.ajax()    // Performs an async AJAX request
$.get()     // Loads data from a server using an AJAX HTTP GET request
$.post()    // Loads data from a server using an AJAX HTTP POST request