以jsonp发送请求,使用jQuery 1.5将响应解释为文本
简短的问题:有没有办法向服务器发出jsonp请求,捕获请求,但不能将其解析为
javascript?我在jQuery 1.5中使用dataType:“jsonp text”但它无法正常工作.
我正在尝试使用jsonp通过AJAX访问跨域URL.问题是另一个域(我大学的目录列表)很老,我怀疑服务器是否支持jsonp. >在Firefox中,我收到“XML标记名称不匹配(预期的META)”错误.在chrome中我得到一个“Uncaught SyntaxError Unexpected token<”两者都指向与我的AJAX请求相对应的文件.错误回调中的错误字符串是“parsererror”. 我想要的是:一种从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"); }); 解决方法
你想要实现的目标是行不通的:只有当服务器在javascript函数调用中正确嵌入响应时,才能使用jsonp.
即使服务器确实将文件发送到浏览器,由于安全限制,您将无法访问它:您所能做的就是将所述数据作为脚本执行(使用脚本标记)或将其用作样式表(使用链接标记)但是,如果它来自另一个域,您将永远无法检查原始文本中的响应. 我想你试图直接将数据作为xml获取并且它失败了(意味着该站点不支持CORS).如果您无法更改服务器端代码,那么您只有两种选择: >在您自己的服务器上创建一个隧道响应的代理(您的服务器端脚本发出实际请求并将其发送到浏览器):然后从客户端的角度应用相同域,您将能够请求数据为XML, (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |