简短的问题:有没有办法向服务器发出jsonp请求,捕获请求,但不能将其解析为javascript?我在jQuery 1.5中使用dataType:“jsonp text”,但它无效。
我正在尝试使用jsonp通过AJAX访问跨域URL。问题是另一个域(我大学的目录列表)很老,我怀疑服务器是否支持jsonp。
我想要的是:从jsonp请求以纯文本形式访问响应的方法。或者,如果我可以从失败的jsonp请求访问原始响应 - 这也可以。
提前致谢!
代码:
ajax_url = 'https://somesite/?searchTerm='+query+'&searchType=lastname';
var jqxhr = $.ajax({type:"GET",
url: ajax_url,
dataType:"jsonp text",
callback: "whatever",
success:function(responseData) {
$('div#content').text( responseData.slice(0, 100) );
dbg(responseData.slice(0,100));
}})
.success(function() { alert("success"); })
.error(function(obj, errStr) { alert("error"); dbg("error: " + errStr + "test: " + test.responseText + this.responseTxt);})
.complete(function() { alert("complete"); });
答案 0 :(得分:8)
您尝试实现的目标不起作用:只有当服务器在javascript函数调用中正确嵌入响应时,才能使用jsonp。
即使服务器确实将文件发送到浏览器,但由于安全限制,您将无法访问它:您所能做的就是将所述数据作为脚本执行(带有脚本标记)或将其用作样式表(使用链接标记)但是,如果它来自另一个域,您将永远无法检查原始文本中的响应。
我想您试图直接将数据作为xml获取并且失败(意味着该站点不支持CORS)。如果您无法更改服务器端的代码,那么您只有两种选择: