在使用ajax请求的时候,遇到跨域的问题,一般解决办法有三种:
1. 使用代理;
2. 使用jsonp
3. 资源共享
这里,我使用了jsonp,由于第一次使用,这里遇到报错 “Uncaught SyntaxError: Unexpected token :”,主要问题在于返回的数据格式不正确。
正确的ajax使用jsonp的方式:
var restUrl = 'http://localhost:8080/analysis'; var clipResult1 = ''; var clipResult2 = ''; $.ajax({ type: "POST", url: restUrl, dataType: 'jsonp', jsonp: 'callback', jsonpCallback: 'success_jsonpCallback', data: { result1:clipResult1, result2:clipResult2, f: 'pjson' }, success: function (success) { var datas = JSON.stringify(success); for(d in success){ var b = success[d]; var c = b; } }, error:function(){ } });但是一直不知道java后端怎么返回,最后终于明白。
System.out.println("jsonStr" + jsonStr); return "success_jsonpCallback(" + jsonStr+ ");" ;
这里只要是要对回调函数理解。