Ajax get with jsonp给出了“SyntaxError:missing; before statement”错误

时间:2017-07-13 11:04:19

标签: javascript jquery ajax api jsonp

我正在使用jQuery进行GET请求并以json格式获取响应。但是当我尝试使用它时,它会在浏览器开发人员工具控制台中抛出错误消息。

  

SyntaxError:missing;在声明[了解更多]主持人:1:10>>

之前

以下是我的代码。

$.ajax({
    type: "GET",   
        url: url,   
        async: false,
        cache: false,
        data: { "filter": "host.vars.osgroup==\"unix\""},
        jsonp: "callback",
        dataType: "jsonp",
        contentType: "application/json; charset=utf-8",
        headers: {
            accept:'application/json',
            "Authorization": "Basic " + btoa(username + ":" + password)
        }
        // },
        // success : function(data)
        // {
        //     console.log(data);
        // }

})
 .done(function(html) {
     $("#displayElement").append(html);
 });

1 个答案:

答案 0 :(得分:2)

当服务器的响应不是有效的JSONP格式时,会发生此错误。清除你身上的东西JSONP不是json。你可以说是javascript脚本。如果你使用说Php,那么你的php应该输出如下:

     header("Content-Type: application/json");    
     exit("mycallback(".json_encode(['error' => 0,'auth_token' => $_COOKIE['server_token']]).")");

你看到Php代码正在输出一个字符串,该字符串具有javascript函数调用,json格式的数据作为参数。现在在ajax调用中你应该拥有流线型的一切。 Ajax调用应该是这样的:

     $.ajax({
        url:'http://ssoidpclient.local/get_auth_token',
        dataType: 'jsonp',
        jsonp: false,
        jsonpCallback: 'mycallback',
        success:function(data)
        {
        }

     });