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的主要内容,如果未能解决你的问题,请参考以下文章