在第二个函数调用中未定义setInterval argumet

时间:2019-05-31 10:18:08

标签: javascript ajax

我正在从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,但第二个输出未定义。

1 个答案:

答案 0 :(得分:1)

您不是将函数传递给setInterval,而是调用函数ajaxd并将其结果作为第一个参数传递给setInterval

在匿名函数中将对ajaxd的呼叫包装:

setInterval(function () {
    ajaxd(postUrl)
}, 5000);