Tim*_*hle 24 javascript ajax jquery
我想创建一个JavaScript函数,它返回jQuery AJAX调用的值.我想要这样的东西.
function checkUserIdExists(userid){
return $.ajax({
url: 'theurl',
type: 'GET',
cache: false,
data: {
userid: userid
},
success: function(data){
return data;
}
});
}
Run Code Online (Sandbox Code Playgroud)
我知道我可以通过将async设置为false来做到这一点,但我宁愿不这样做.
rsp*_*rsp 31
你不能返回AJAX调用返回的数据,除非你想同步调用它(你不相信我 - 相信我).但是你可以返回的是对AJAX调用返回的数据的承诺,你可以以非常优雅的方式实现它.
(更新: 请注意,目前jQuery Promises与Promises/A +规范不兼容- 在这个答案中有更多信息.)
基本上你可以返回$ .ajax(...)调用的返回值:
function checkUserIdExists(userid){
return $.ajax({
url: 'theurl',
type: 'GET',
cache: false,
data: {
userid: userid
}
});
}
Run Code Online (Sandbox Code Playgroud)
并且调用您的函数的人可以像这样使用它:
checkUserIdExists(userid).success(function (data) {
// do something with data
});
Run Code Online (Sandbox Code Playgroud)
如果您有兴趣,请参阅我的这篇文章以获得更好的解释和演示.
Ome*_*ari 16
你可以传入一个回调函数:
function checkUserIdExists(userid, callback) {
$.ajax({
...
success: callback
});
}
checkUserIdExists(4, function(data) {
});
Run Code Online (Sandbox Code Playgroud)
使用jQuery 1.5,您可以使用全新$.Deferred功能,这正是为此而设计的.
Run Code Online (Sandbox Code Playgroud)// Assign handlers immediately after making the request, // and remember the jqxhr object for this request var jqxhr = $.ajax({ url: "example.php" }) .success(function() { alert("success"); }) .error(function() { alert("error"); }) .complete(function() { alert("complete"); }); // perform other work here ... // Set another completion function for the request above jqxhr.complete(function(){ alert("second complete"); });
小智 7
从jQuery 1.8开始,不推荐使用"成功","错误"和"完整"回调.相反,你应该使用"完成","失败"和"永远".
所以你可以:
function checkUserIdExists(userid, callback) {
return $.ajax({
url: 'theurl',
type: 'GET',
cache: false,
data: {
userid: userid
}
})
.done(callback)
.fail(function(jqXHR, textStatus, errorThrown) {
// Handle error
});
}
checkUserIdExists(2, function(data) {
console.log(data); // Do what you want with the data returned
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
88791 次 |
| 最近记录: |