我使用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查看我从服务器获得的答案:
在SyntaxError之前有任何解析问题:意外令牌:':'。我如何在客户端站点的json中解析答案?我无法解决其他问题。
我解决了看起来,我必须在服务器上给出mycallback-function的名称。 “mycallback(”+ jsonAnswer +“)”它有效。
` PrintWriter out = response.getWriter();
response.setContentType("application/javascript");
response.setCharacterEncoding("UTF-8");
out.print("mycallback("+jsonAnswer+")");
out.flush();`