$ .post和$ .ajax之间的区别?

好奇,如果有人知道与数据参数有什么不同。

我有$.post方法需要一个$('#myform').serialize()作为我的数据参数,并工作。

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

有谁知道区别,我可能会用什么来代替上面的.serialize

这篇文章会对你有所帮助。

论坛链接

总之以下:

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

相当于:

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

这里的问题不是事实$.ajax()不工作,这是因为您没有在Ajax请求中设置types参数,它默认为GET请求。 数据通过查询string获取,如果您的后端将它们视为后期参数,则不会读取它们。

$.post只是一个调用$.ajax() ,只是type设置。 阅读文档 ,你会看到$.ajax()默认为GET,如上所述。

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

在重新阅读一些在线文档之后,我决定坚持使用$ .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'); } 

你是否指定这个数据参数。 $.post只是$.ajax的缩写,期望以下内容。

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

作为补充,在接受的答案中,有人提到“ $ .ajax方法的数据参数与$ .post方法不一样,不知道究竟是什么,但是有一个区别

请尝试使用:

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

否则,将json对象get作为url编码的string插入到有效内容中。

$.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);