[英]Is it possible to make a JSONP request that gets back JSON data via a cross domain request using jQuery?
我正在使用jQuery Ajax调用来查询返回纯JSON数据的跨域URL:
function getAlibrisSuggestions(theKeywords)
{
$.ajax(
{
url: "http://www.alibris.com/cgi-bin/complete?site=18640838&mtype=B&term=" + encodeURI(theKeywords),
dataType: 'jsonp',
type: "GET",
crossDomain: true,
/* None of these helped obviously since the return is not JSONP but JSON
complete: onSuggestionsFetched,
beforeSend: onBeforeSend,
success: onSuccess,
dataFilter: onDataFilter,
*/
});
}
示例网址请求:
http://www.alibris.com/cgi-bin/complete?site=18640838&mtype=B&term=book
JSON响应:
[
{"l": "BP", "v": "books llc"},
{"l": "BA", "v": "books time-life"},
{"l": "BA", "v": "books general"},
{"l": "BA", "v": "books sunset"},
{"l": "BP", "v": "books on demand"},
{"l": "BA", "v": "books golden"},
{"l": "BA", "v": "books scholastic"},
{"l": "BP", "v": "book jungle"},
{"l": "BA", "v": "books chronicle"},
{"l": "BP", "v": "booksurge publishing"}
]
由于它是跨域的,因此我必须使用JSONP以避免起源错误。 正如您从该URL的响应中看到的那样,问题是返回的内容是纯JSON。 由于未将其格式化为Javascript,因此会导致jQuery在Chrome的控制台中返回结果状态“ parsererror”和预期的“资源已解释为脚本但已传输为MIME类型文本/纯文本”的警告状态。
我无法控制外部服务器。 我想避免将调用包装在服务器端脚本中,只是为了将返回装扮成Javascript。 有谁知道能够处理退货的聪明方法?
-罗施勒
不可能,抱歉。 在您的服务器上制作一个页面以转发请求是您的最佳选择。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.