Ajax JSONP Parseerror-Callback-Not-Called with Tomcat 9

Posted

技术标签:

【中文标题】Ajax JSONP Parseerror-Callback-Not-Called with Tomcat 9【英文标题】: 【发布时间】:2019-08-11 10:08:57 【问题描述】:

我在使用我的 tomcat servlet 时遇到了问题。我正在尝试使用 jsonp 在 localhost 上跨站点脚本。我正在尝试使用 ajax/javascript 访问本地服务器,如下所示:

$.ajax(
    url: 'http://localhost:8080/tomtest/test',
    type: 'GET',
    crossDomain: true,
    jsonp: 'callback',
    jsonpCallback: 'mycallback',
     async: false,
    dataType: 'JSONP',

    success: function(data) 
        console.log(data);
        ,
        error: function (request, textStatus, errorThrown) 
        console.log('Error');   console.log(request.status);
        console.log(request.statusText); console.log(request.readyState);
        console.log(textStatus);  console.log(errorThrown);
    );


mycallback = function(data)alert(data);;

我的服务器 (tomcat-servlet-java) 将响应如下内容:

    PrintWriter out = response.getWriter();
    response.setContentType("application/javascript");
    response.setCharacterEncoding("UTF-8");
    out.print(jsonAnswer);
    out.flush();

使用firefox查看我从服务器得到的答案:

enter image description here

在 SyntaxError: unexpected token: ':' 之前有任何解析问题。如何在客户端站点上解析 json 中的答案?我无法用其他问题解决它。

【问题讨论】:

【参考方案1】:

我解决了。看来,我必须在服务器上给出 mycallback-function 的名称。 "mycallback("+jsonAnswer+")" 有效。

`   PrintWriter out = response.getWriter();
    response.setContentType("application/javascript");
    response.setCharacterEncoding("UTF-8");
    out.print("mycallback("+jsonAnswer+")");
    out.flush();`

【讨论】:

以上是关于Ajax JSONP Parseerror-Callback-Not-Called with Tomcat 9的主要内容,如果未能解决你的问题,请参考以下文章

ajax jsonp的跨域请求

使用 JSONP 时如何捕获 jQuery $.getJSON(或数据类型设置为“jsonp”的 $.ajax)错误?

Ajax跨域问题解决(Ajax JSONP)

jsonp与ajax

ajax jsonp请求async设置false同步无效

Ajax和jsonp区别