需要我的推迟帮助,尝试使用.then和.done。但它不起作用。 它在我的服务器调用完成之前编写我的console.log。
$.when(PersonAtlLawUpdate(personRef)).then(console.log('test'));
function PersonAtlLawUpdate(personRef, cbFunc) {
var selectionPanel = $('div#SelectionPanel'),
fromdate = selectionPanel.find('input#FromDateTextBox')[0].defaultValue,
timeSpan = selectionPanel.find('select#TimeSpanDropdownList').data('timespanvalue'),
url = "MonthOverview.aspx/OnePersonAtlLawUpdate";
$.ajax({
url: url,
data: JSON.stringify({ personRef: personRef, fromdate: fromdate, timespan: timeSpan }),
type: "POST",
contentType: "application/json",
dataType: "JSON",
context: document.body,
success: function (atlError) {
changePersonAtlStatusIcon(atlError, personRef);
if (cbFunc != null) {
cbFunc();
}
return atlError;
},
error: function (xhr, status, errorThrown) {
//alert(errorThrown + '\n' + status + '\n' + xhr.statusText);
}
});
}
答案 0 :(得分:1)
PersonAtlLawUpdate()
应返回Deferred对象,以便与$.when()
一起使用。
由于您感兴趣的延期由$.ajax()
返回,您应该写:
function PersonAtlLawUpdate(personRef, cbFunc) {
// [...]
return $.ajax({
// ...
});
};