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