【发布时间】:2014-03-05 20:31:52
【问题描述】:
我正在尝试使用 jquery $.ajax 设置对 Web 服务的通用调用。我希望能够取回原始数据并将其绑定到网格。
当我知道数据类型时,我的调用工作正常,但我想尝试在不知道数据类型的情况下进行 ajax 调用,特别是查找数据类型是什么。
例如,我知道数据类型的 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
}
});
但每当我在不知道数据类型的情况下发出请求时,我只会得到“错误”的响应状态?
我最终希望能够对此执行的操作是 ping 一个返回 json、xml 或者可能是 odata(不太可能)的 url(webservice)。因为我不知道是哪个,所以我希望能够简单地调用 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 服务获取数据,该 Web 服务可能返回 xml 或 json。我真的不在乎哪个,我只需要显示它。只是好奇是否有可能。
-
如果您更改服务以返回
content-type以及数据会怎样。{ contentType: 'json', data: [] } -
如果我能控制服务就好了,但这假设我没有。
-
在您的服务器上创建一个“代理”脚本来为您进行抓取,并以您想要显示的格式返回。
标签: javascript jquery ajax json web-services