我正在从API生成文件,并且需要不断发出请求,直到文件准备好为止,所以我使用setInterval反复调用ajax调用,但是在第二个调用中,URL变得不确定。
$( "#campaign-list-table form").submit(function(event) {
event.preventDefault();
let exportOption = $(this).children("option:selected").val();
let postUrl = $(this).attr('action');
setInterval(ajaxd(postUrl), 5000);
});
/**
*
* @param postUrl
*/
let ajaxd = function (postUrl) {
$.ajax({
method: 'POST',
url: postUrl,
contentType: "application/xml",
complete: function (data) {
//let $xmlObject = parseXML(data);
console.log(postUrl);
ajaxd();
}
});
}
我希望URL的输出为'api / export / 2988475,但第二个输出未定义。
答案 0 :(得分:1)
您不是将函数传递给setInterval
,而是调用函数ajaxd
并将其结果作为第一个参数传递给setInterval
。
在匿名函数中将对ajaxd
的呼叫包装:
setInterval(function () {
ajaxd(postUrl)
}, 5000);