JSONP跨域GET请求不能跨域工作



Ok,所以我尝试使用jsonp返回类别列表以填充下拉列表的跨域ajax webservice调用,并获得奇怪的结果。我已经遵循了尽可能多的例子,并有一个jsonp请求工作在我的域,但它不工作在其他域。

下面的代码:

  function parseJSON(item){
    return   JSON.parse(item, function (key, value) {
                    var type;
                    if (value && typeof value === 'object') {
                        type = value.type;
                        if (typeof type === 'string' && typeof window[type] === 'function') {
                            return new (window[type])(value);
                        }
                    }
                    return value;
                });
    };

    function getCategories() {
        var webserviceURL = 'http://www.theprintersinc.co.uk/TPIWS.asmx/getCategories';
        var myData;
        $.ajax({
            type: "GET",
            contentType: "application/json; charset=utf-8",
            url: webserviceURL,
            data: { galleryGuid: 1 },
            dataType: "jsonp",
            complete: function (msg) {
                if (msg) {
                var myObject = parseJSON(msg.responseText);
                var myCatList = parseJSON(myObject.d);
                        if (myCatList) {
                             catList = myCatList;
                             setCatDDL();
                        };
                };
                //reset close button
             },
            error: function (xhr, ajaxOptions, thrownError) {
                var err = "err";
            }
         });
    };

你可以看到这个工作在我的域名http://www.theprintersinc.co.uk/stackHelp.html然而,当我尝试从一个简单的html文件在我的电脑或另一个服务器上运行这个代码不工作。我刚从jbug中得到一个语法错误。

任何和所有的帮助是非常感谢提前!

尼克

我不是专家,但是你可以考虑一下jquery文档中关于"同源策略"限制的指定:http://api.jquery.com/jQuery.getJSON/

"其他说明:由于浏览器的安全限制,大多数"Ajax"请求都遵循同源策略;请求不能成功地从不同的域、子域或协议检索数据。脚本和JSONP请求不受同源策略限制。"

要使用JSONP,您应该添加callback=?到您的URL。在同一个jquery文档中,有一个示例:

相关内容

  • 没有找到相关文章

最新更新