描述
在使用json方式获取数据时返回的数据是正常的无报错,但只要使用jsonp获取就会报错“Uncaught SyntaxError: Unexpected token :”。
原因
jsonp直接将返回的数据当做javascirpt脚本来处理,数据必须是合法的js代码,而不是json,当返回成功的时候这一串数据已经按javascript规范执行了,因此数据返回的格式回到客户端是格式错误的。
解决方案
把返回的数据套在一个函数里,并且客户端也要有和数据相同的函数来接jsonp的数据。
服务器端
callback({"a":1,"b":2,"c":3});
客户端
在全局创建一个和服务器端数据的同名函数
function callback(data){
console.log(data.name);
}
jquery ajax方式
直接在ajax属性加写上jsonpcalback:"callback",就可以接收到
$.ajax({
type: "get",
url: "xxx.xxx",
dataType: "JSONP",
jsonpCallback:"callback",//加上
success: function(data) {
console.log(data.name);
}
});