ajax代码:
$.ajax({ url: url, type: 'GET', dataType: 'jsonp', async:false, jsonp: "callback",//传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(一般默认为:callback) jsonpCallback: "jsonpcallback",//自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名,也可以写"?",jQuery会自动为你处理数据 timeout : 40000, success: function(data){ alert(data[0].name); }, error: function(XMLHttpRequest, textStatus, errorThrown) { alert(XMLHttpRequest.status); alert(XMLHttpRequest.readyState); alert(textStatus); } });
后台代码:
String jsonpcallback = request.getParameter("callback"); jsonpcallback = jsonpcallback == null ? "" : jsonpcallback; response.setContentType("application/x-javascript"); response.setCharacterEncoding("UTF-8"); response.setHeader("P3P", "CP=CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"); PrintWriter out; try { out = response.getWriter(); out.write(jsonpcallback+ "([{ returnFlag:"+bln+",taskid:"+taskid+"}]);"); out.flush(); out.close(); } catch (IOException e) { e.printStackTrace(); }
运行ajax一直走error,其中
XMLHttpRequest.status :200
XMLHttpRequest.readyState :4
textStatus :parsererror
求大神指点!
没有写回调函数名.问题出在
String jsonpcallback = request.getParameter("callback");
打断点.调到jsonpcallback有值就行
out.write("jsonpcallback({ returnFlag:"+bln+",taskid:"+taskid+"});");