首页 > 解决方案 > 由于浏览器中的长脚本运行错误,ajax 调用抛出不起作用

问题描述

我正在使用 ajax 调用,它在浏览器中抛出“由于正在运行长脚本而没有响应”,并提供了一个停止脚本的按钮。

url 来得很完美,success 函数中的 console.log(4) 甚至没有加载,它只是挂起。

该问题仅在某些情况下发生,仅在其他情况下才有效。我什至比较了数据,数据结构也没有变化。

请帮帮我

$.ajax({
       timeout: 3000,
       type: "POST",
    url: serviceURL,
    data: JSON.stringify(apiInput),
    contentType: "application/json; charset=utf-8",
    dataType: 'json',
    success: function (data) {
        console.log(4);
        if (onsuccess !== null) {
            onsuccess(data);
        }
    },
    error: function (x, y, z) {
        if (onerror !== null) {
            onerror(x, y, z);
        }
    }
});

标签: javascriptjqueryajax

解决方案


我不确定您的 Ajax 成功方法的 onsucces 部分在这里试图做什么。

试试这个,看看控制台的错误

$.ajax({
    type: "POST",
    url: serviceURL,
    data: JSON.stringify(apiInput),
    contentType: "application/json; charset=utf-8",
    success: function (data) {
        console.log(data);
    },
    error: function (x, e) {
        if (x.status == 0) {
            console.log('You are offline!!\n Please Check Your Network.');
        } else if (x.status == 404) {
            console.log('Requested URL not found.');
        } else if (x.status == 500) {
            console.log('Internel Server Error.');
        } else if (e == 'parsererror') {
            console.log('Error.\nParsing JSON Request failed.');
        } else if (e == 'timeout') {
            console.log('Request Time out.');
        } else {
            console.log('Unknow Error.\n' + x.responseText);
        }
    }   
});

我认为您正在尝试检查 API 调用是否成功,Ajax 的工作方式本质上是请求状态,如果请求返回状态为 200(这意味着没问题),那么它将达到成功部分该方法,如果它是一个错误,例如 404(找不到 URL)或 500(内部服务器错误),那么函数的错误部分将被命中,然后只需 console.log 该数据并根据需要查看它。


推荐阅读