【问题标题】:Treat callback response in $.ajax() as JSON将 $.ajax() 中的回调响应视为 JSON
【发布时间】:2014-02-25 16:40:35
【问题描述】:

我有:

<script>
    $('#email').on('blur', function(){
        email = $(tihs).val();
        $.ajax({
            type: "POST",
            url: "ajax.php",
            data: {
                'email': email,
                'job': 'check',
            },
            dataType: "JSON",
            success: function (response) {
                // the response from PHP is smth like:
                // {"status":"failed","reason":"email_not_validated"}
                // now I want to:
                if(response.status == 'success'){

                }else{

                }
            }   
        })
    });
</script>

这似乎适用于所有浏览器除了 IE,这是为什么呢?

我做对了吗?我唯一需要的是访问返回的数据,例如 response.statusresponse.reason

感谢您的帮助

【问题讨论】:

  • 此处出现错误email = $(tihs).val();email 也泄漏到全局范围。
  • 在 IE 中发生了什么以及使用的 jQuery 版本是什么
  • 你用的是什么版本的IE。
  • @TAS IE 10,我测试了一些警报,似乎没有发送作业值,我收到“未发送作业”
  • @elclanrs 在这里打错了,在我的源码里没问题,顺便编辑了

标签: javascript jquery ajax json jquery-callback


【解决方案1】:

这是一个提到的IE10 bug,可以修复by adding

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE9" />

&lt;head&gt;。请注意,&lt;head&gt; 中不应有另一个带有 X-UA-Compatible 的元标记,因为前一个元标记将被覆盖。

【讨论】:

  • 它是否也适用于旧 IE?我正在使用 jQuery 1.11 和 Bootstrap 3
  • 当然,它甚至适用于 IE6,包括任何 stable 版本的 jquery
  • 不,就尾随逗号而言,它不会起作用,你可以肯定地测试它。
  • @Jai 我相信你错了,尾随逗号永远不会导致错误,我只是看到它与逗号一起工作......
  • @behz4d 他是对的——误导性的逗号可能会在过时的浏览器中导致语法错误。所以在这里你能做的最好的事情就是在'job': 'check', 之后删除它。无论如何,你没有什么可松懈的。
猜你喜欢
  • 1970-01-01
  • 2011-10-27
  • 1970-01-01
  • 2014-10-24
  • 2023-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-10
相关资源
最近更新 更多