我有一个代码,我需要发出跨域请求以获取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/
响应很好但由于该错误,不会调用成功回调。任何解决方案?
答案 0 :(得分:2)
“未捕获的SyntaxError:意外的令牌&lt;”表明返回的数据很可能是HTML标记而不是正确的JSONP。为了从JSONP Web服务返回HTML,您需要在服务器上使用正确的过程调用语法包装HTML。如,
jQuery17207555819984991103_1414157672145 ("<div>... your HTML here ...</div>")
由于HTML可能会在其中包含引号字符,因此您需要转义,URL编码,UUEncode或以其他方式将HTML文本转换为适当的Javascript字符串,然后将其转换回客户端。
对于“_
= 1414157675836”,正在添加此项以确保不缓存响应。除非您的服务器的Web服务拒绝请求,因为无法识别“_
”参数,否则这是一个红色的鲱鱼。问题是来自主机的错误JSONP语法。