微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript-在不知道dataType的情况下对URL进行$.ajax调用

我正在尝试使用jquery $.ajax建立对Web服务的通用调用.我希望能够获取原始数据并将其绑定到网格.

当我知道dataType时,我的调用可以正常工作,但是我想尝试进行ajax调用而又不知道数据类型,特别是要查找dataType是什么.

例如,我的ajax调用知道数据类型可能是:

$.ajax({
    type: 'GET',
    crossDomain: true,
    dataType: "jsonp",
    url: 'http://itunes.apple.com/search?term=coldplay',
    success: function (res, status, xhr) {
        //DoStuff;
    },
    error: function (jqXHR, textStatus, errorThrown) {
        //DoStuff
    }
});

但是,任何时候我不知道数据类型而发出请求时,我只会得到响应状态为“错误”吗?

我最终想做的是对url(网络服务)执行ping操作,该操作返回json,xml或odata(不太可能).由于我不知道哪一个,因此我希望能够只对URL进行一次调用,以找出可以返回的数据类型以及内容类型.

我试过简单地返回错误中标头中的内容类型,但是到目前为止,我尝试过的任何方法都没有起作用或返回了任何东西.

$.ajax({
    type: 'GET',
    crossDomain: true,
    url: 'http://itunes.apple.com/search?term=coldplay',
    success: function (res, status, xhr) {
        //DoStuff
    },
    error: function (jqXHR, textStatus, errorThrown) {
        $("#results").html(textStatus + jqXHR.getResponseHeader('Content-Type'));
    }
});

甚至可以用Jquery完成吗?

编辑

我知道可以(在大多数情况下)可以在服务器端完成此操作,并且很可能最终会发生这种情况.但是,为了了解我可以在不知道我的dataType的情况下将网格绑定到数据源客户端的距离,上述问题就产生了.

感谢所有的时间.

解决方法:

您的方法是合理的,但是您正在要求用户的浏览器从第三方Web服务器获取信息.

XMLHttpRequest cannot load http://itunes.apple.com/search?term=coldplay. No ‘Access-Control-Allow-Origin‘ header is present on the requested resource. Origin ‘http://fiddle.jshell.net‘ is therefore not allowed access.

除非第三方授予您许可,否则Same Origin Policy将阻止您的JavaScript访问有关响应的任何信息.

您应该在逻辑服务器端移动.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐