javascript - JSONP无响应IE弹出 'Syntax Error'

标签 javascript jquery ajax json internet-explorer

当前应用程序必须从另一个应用程序检索信息,并且不需要此其他应用程序处于事件状态即可响应 JSONP 请求,因此发起请求者将弹出有关它的警告消息。

function jsonRequest(requestURL, errorMsg){
    var err = "";
    var requestData= {param1: value1, param2: value2};
    $.ajax({
        type: 'GET',
        async: true,
        data: requestData,
        jsonpCallback: 'jsonCb',
        url: requestURL,
        timeout: 20000,
        dataType: 'jsonp', /* this trigger the syntax error window by IE*/
        contentType: "application/json; charset=utf-8",
        success: function(data) {
            if(data.hasError != null){
                error = data.error;
                alert(error);
            }else{
                //.... logic to output valid values
            } // closing } is not missing..duh
        },//success
        error:function(x, timeout, m) {
            alert(errorMsg);
        }
    });

    return err;
}

那么就存在三种可能的情况:

  1. JSONP 请求从其他应用程序接收有效数据
  2. JSONP 请求从其他应用程序接收到空数据
  3. JSONP 请求没有得到响应(其他应用程序未激活)

到目前为止一直很好,直到在 IE 上进行测试。问题是当涉及到 场景 3 时,IE 弹出其经典的 Syntax Error,在单击“关闭”后,$.ajax 中的警告消息 error: {..} 显示

Message: Syntax error
Line: 1
Char: 1
Code: 0
URI:.......

SCRIPT1002: Syntax error

IE 调试工具非常蹩脚,所以它不允许我了解任何细节。在我逐行检查 javascript/jsp 代码后,我找到了问题的原因:

在场景 3 中,一旦我在 javascript 代码中将 dataType: "jsonp" 更改为 dataType: "json" ,然后出现错误不再弹出,但当然整个 ajax 请求都会失败。当其他应用程序处于非事件状态时,我无法找出调试工具返回给 IE 的内容。

我想知道是否有任何有效的方法可以让 IE 容忍 JSONP 或任何方法来调试问题的原因。

最佳答案

IE9 在任何情况下都可以使用您的代码这一事实证明了为那个恐龙创建 javascript 引擎的微软程序员的绝对无能

/rant - 您的问题的解决方案如下:查找 //you forgot this closing brace

function activateManifestJson(aUrl, code, timeoutErr){
    var error = "";

    // RESTful request data
    var urlData = {param1: value1, param2: value2};

    $.ajax({
        type: 'GET',
        url: aUrl,
        async: true,
        data: urlData,
        jsonpCallback: 'jsoncallback',
        timeout: 20000,
        dataType: 'jsonp', /* this trigger the syntax error window by IE*/
        contentType: "application/json; charset=utf-8",
        success: function(json) {
            if(json.hasError != null && json.hasError == "true"){
                error = json.error;
                alert(error);
            }else{
                //.... logic to output valid values
            // *******************************************
            } // you forgot this closing brace
        // ***********************************************
        },//success
        error:function(x, tm, m) {
            alert(timeoutErr);
        }
    });

    return error;
}

关于javascript - JSONP无响应IE弹出 'Syntax Error',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31687602/

相关文章:

javascript - 正确使用 jQuery 切换方法

javascript - 阿多尼斯 : how to catch exception in lucid model creation?

javascript - IFrame根据浏览器的 "height" "width"调整

jquery - 即使出现服务错误,主干模型也会被破坏

javascript - 当一个类存在多个项目时,Jquery 定位

javascript - 如何强制/允许用户下载多个文件? (客户端)

javascript - 无法在 JSON 对象内动态添加值

php - 从mysql获取所有值然后创建变量

javascript - jQuery Ajax 调用导致所有浏览器崩溃

c# - 两个更新面板