我需要一个超链接来执行Ajax调用,当它完成后,执行超链接的标准操作。
<a href="afterwards.html" target="_blank" onclick="return CallFirst();">Link</a>
javascript函数调用$.ajax()
,等待成功或失败,然后返回true。
function CallFirst()
{
$deferred = $.ajax({
type: "POST",
url: url,
data: data
});
// **todo** WAIT until the Ajax call has responded.
// Return true, which makes the <a> tag do it's standard action
return true;
}
代码必须等待$.ajax
成功,然后从CallFirst()
返回true。
$deferred.when()
立即终止。如何才能等待?
答案 0 :(得分:8)
只需将async
属性设置为false
$deferred = $.ajax({
type: "POST",
url: url,
data: data,
async: false
});
但使用回调确实是一个更好的主意。
答案 1 :(得分:1)
您可以将async设置为false,但更好的做法是使用回调:
.done(function( success) {
if (success) {
doSomeThingElseNow();
}
});
答案 2 :(得分:0)
使用来自jquery的ajax回调构建。
$.ajax({
url: '/path/to/file',
type: 'default GET (Other values: POST)',
dataType: 'default: Intelligent Guess (Other values: xml, json, script, or html)',
data: {param1: 'value1'},
})
.done(function() {
console.log("success");
})
.fail(function() {
console.log("error");
})
.always(function() {
console.log("complete");
});