描述

  在使用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);
        }
    });