Ajax仅在Safari 9.0中调用DOM错误

时间:2015-10-15 09:21:44

标签: javascript ajax dom

我的javascript中有以下代码

var _csrf = $("#csrf_token").val();

        var xhr = $.ajax ({

            url : 'http://ip.jsontest.com/',
            type : 'GET',
            contentType : 'application/json',
            headers : {

                        "csrf" : _csrf
                    }
        })
        .done(function(data){

            alert('done');   

        })
        .fail(function(data){

            alert(data["statusText"]);
        })
        .always(function(data){

            alert('always');

        })

csrf_token是HTMl如下

<input type="hidden" value=" {{ csrf_token }}" id="csrf_token" >

调用此ajax调用时得到的结果是Error:SyntaxError:DOM异常12如果失败;块。

但是当删除csrf头时,会调用done块中的警报并始终阻止。

相同的代码在Chrome中运行良好,不会抛出任何DOM错误。

感谢您解决此问题的任何帮助。

谢谢

修改

我尝试过不同的档案 在HTML中:     

在JS中

 var c = $("#sessionId").val()
 var xhr = $.ajax ({

        url : 'http://ip.jsontest.com/',
        type : 'GET',
        contentType : 'application/json',
        headers : {

                    "identifier" : cookie
                }
    })
    .done(function(data){

        alert('done');   

    })
    .fail(function(data){

        alert(data["statusText"]);
    })
    .always(function(data){

        alert('always');

    })

仍然是同一个问题

1 个答案:

答案 0 :(得分:0)

我刚刚遇到这个问题,我自己试图使用

headers = 'Content-Type: application/x-www-form-urlencoded';

我发现,经过一些小小的摆弄,它正在绊倒在标题中的空间。当我把它设置为:

headers = 'Content-Type:application/x-www-form-urlencoded';

它完美无缺。我已经检查过使用不同的标题内容(随机文本,其他有效标题),并且标题中至少有一个空格的存在导致了这个特殊的麻烦。我不知道你是否可以重新配置你的标题以删除空格,但它让我开始重新开始工作。

不确定是否要向Apple报告,因为它在Safari 9更新之前完全正常工作,或者可能是jQuery工作人员仔细观察的内容。