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