跨域Ajax(JSONP)回调问题

Cross Domain Ajax (JSONP) Callback Issue

本文关键字:回调 问题 JSONP Ajax 跨域      更新时间:2023-09-26

我有一个代码,需要在其中进行跨域请求,以获得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语法。