我有一个代码,需要在其中进行跨域请求,以获得text/html作为响应。我一直在使用JSONP方法,并且之前在其他程序上获得了结果(json)。当我运行程序时,控制台报告一个错误,它是
Uncaught SyntaxError: Unexpected token <
?callback=jQuery17207555819984991103_1414157672145&_=1414157675836"
正如您所看到的,它在导致问题的回调参数之后添加了一个额外的参数值。当我在"网络"选项卡中看到响应时,它非常好,正是我想要的。我在4个跨域链接上测试了它,所有链接都会收到额外的参数。以下是我的代码:
$.ajax({
type: 'get',
url: link,
dataType: 'jsonp',
success: function(dataWeGotViaJsonp){
alert(dataWeGotViaJsonp)
var len = dataWeGotViaJsonp.length;
}
});
我传递给它的链接:
http://stackoverflow.com/questions/20944962/data-grid-view-update-edit-and-delete-in-vb-net-windows-form-that-using-multipl
http://www.espncricinfo.com/pakistan-v-australia-2014/engine/match/727927.html
http://pucit.edu.pk/
响应良好,但由于该错误,没有调用成功回调。有什么解决方案吗?
"Uncaught SyntaxError:Unexpected token<"表示返回的数据很可能是HTML标记,而不是正确的JSONP。为了从JSONP web服务返回HTML,您需要在服务器上使用适当的过程调用语法包装HTML。例如,
jQuery17207555819984991103_1414157672145 ("<div>... your HTML here ...</div>")
由于HTML中可能有引号字符,因此您需要转义、URL编码、UUEncode或以其他方式将HTML文本转换为适当的Javascript字符串,然后在客户端中将其转换回。
对于"_
=1414157675836",添加此项是为了确保响应不被缓存。除非服务器的web服务因为无法识别"_
"参数而拒绝该请求,否则这只是转移注意力。问题是来自主机的错误JSONP语法。