【问题标题】:Ajax cross domain script blocking by IEIE 拦截 Ajax 跨域脚本
【发布时间】:2014-04-01 07:10:34
【问题描述】:

我正在从 jquery ajax 方法访问数据。它在 Google Chrome 和 FireFox 中运行良好。但是 IE 给出错误 SCRIPT5: Access is denied.

$('#button').bind('change focusout', function () {
        $.ajax({
                    url: "http://zip.elevenbasetwo.com",
                    cache: false,
                    dataType: "json",
                    type: "GET",
                    data: "zip="+$('#zip').val(),
                    success: function(result, success) {
                            $("#city").val(result.city);
                            $("#state").val(result.state);
                        },
                    error: function(result, success) {
                            $("#city").val("");
                            $("#state").val("");
                        }
        });
    });

我能做些什么来解决它?

【问题讨论】:

  • 问。您是否尝试过使用 JSONP 而不是 JSON 进行数据传输?问:您尝试访问的网站是否在您的控制之下?如果没有,您可以随时打包您自己网站上提供的服务。
  • 这是现代浏览器防止 XSS 的属性。尝试向您的服务器发布代理调用,然后该服务器会调用该服务器。
  • 我将 dataType:"json" 更改为 dataType:"jsonp" 它再次对我不起作用。现在我收到一些回调问题的错误。如何使用 jquery 进行代理调用?
  • w.open(h,b.url,b.async) 我在这一行遇到错误

标签: jquery internet-explorer cross-domain


【解决方案1】:

像这样更新代码

function callGetRequest() {
    $.ajax({
        url: "http://zip.elevenbasetwo.com",
        cache: false,
        dataType: "json",
        type: "GET",
        data: "zip="+$('#zip').val(),
        success: function(result, success) {
                $("#city").val(result.city);
                $("#state").val(result.state);
            },
        error: function(result, success) {
                $("#city").val("");
                $("#state").val("");
            }
    });
}

并像这样在单击按钮时调用此方法

<button type="button" onclick="callGetRequest()">Button</button>

此代码适用于所有浏览器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-07
    • 2019-02-03
    • 2018-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多