问题描述
- jsonp跨域访问Struts2后台,获取到的数据没有用callback参数包裹是怎么回事啊?
-
前端代码:$.ajax({ url:'http://localhost:8080/OA/json/json.action?orgid=aaa&code=00002', dataType:'jsonp', type:"GET", dataFilter:function(json,me){ alert("dataFiter:"+json); }, contentType : "application/json-rpc", jsonpCallback : "call", success : function(response,status,xhr){ alert(response); }, error : function(xhr,errText,errStatus){ alert("error"); } });
后台配置:
<package name="json" namespace="/json" extends="json-default"> <action name="json" class="jsonTest" method="shareInfo"> <interceptor-ref name="json"></interceptor-ref> <result type ="json" name="success"> <param name="noCache">true</param> <param name="contentType">text/html</param> </result> </action> </package>
老是提示:Uncaught SyntaxError: Unexpected token :
从network中看到的response数据是json格式的,在线解析也成功了。
解决方案
jsonp (String) : 在一个jsonp请求中重写回调函数的名字。这个值用来替代在"callback=?"这种GET或POST请求中URL参数里的"callback"部分,比如{jsonp:'onJsonPLoad'}会导致将"onJsonPLoad=?"传给服务器。
你配置的回调函数名称配置错了,是jsonp,不是jsonpCallback
jsonpCallback : "call",
==>
jsonp : "call",
java就不懂了,jsonp你一定要获取到回调函数名称后输出类型 回调函数名称(数据),其他格式会出错
时间: 2024-12-31 02:13:16