一:百度介绍:
JSONP(JSON with Padding)是JSON的一种“使用模式”,可用于解决主流浏览器的跨域数据访问的问题。由于同源策略,一般来说位于 server1.example.com 的网页无法与不是 server1.example.com的服务器沟通,而 HTML 的<script> 元素是一个例外。利用 <script> 元素的这个开放策略,网页可以得到从其他来源动态产生的 JSON 资料,而这种使用模式就是所谓的 JSONP。用 JSONP 抓到的资料并不是 JSON,而是任意的JavaScript,用 JavaScript 直译器执行而不是用 JSON 解析器解析
二:前端使用:
<script type="text/javascript">
function test(){
$.ajax({
type: "post", dataType:'jsonp', jsonp:'callback', data : $('#register_formId').serialize(), url:'http://192.168.191.1:8080/H5Web/menushowmanage/menushowmanage/jsonpTest?callback=?', success:function(data){ if(data.result_code=="200"){ alert("您的操作执行成功!"); }else{ alert("操作失败") } },error:function(XMLHttpRequest,textStatus,errorThrown) { alert("404"); alert(XMLHttpRequest.status); alert(XMLHttpRequest.readyState); alert(textStatus); alert(XMLHttpRequest.responseText); } }); } </script>
三:后端示例
private String callback;//前端jsonp动态生成函数名称
/** * get与set方法 */
public String getCallback() { return callback; } public void setCallback(String callback) { this.callback = callback; }
/** * jsonp使用方法 */ public void jsonpTest(){ System.out.println("---url:"+url+"--callback:"+callback); Gson gson=Constants.GSON; BaseRes bs=new BaseRes(); bs.setResult_code(SuccessCode.CLIENT_SUCCESS.getResult()); this.print(callback+"("+gson.toJson(bs)+")");//jsonp返回格式,callback表示前端jsonp提交后台的一组随机方法,但callback名称要和前端保持一致 }
返回前端页面jsonp的格式:
jQuery18007564855464734137_1431501866366({"result_code":"200"})
其中jQuery18007564855464734137_1431501866366是通过前端随机生成传递后台的callback值 (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|