`
pengfeifei26
  • 浏览: 243823 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

jsonp用法

 
阅读更多
http://liuyieyer.iteye.com/blog/2110257


 <script language='javascript'>
	
	$(function(){
		$("#button").click(function(){
			console.log("111111111");
			
			$.ajax({
          type: 'GET',
          url: 'http://localhost:8080/gctappservice/placard/search?pubTime=%E4%B8%89%E5%A4%A9&purItemCode=A02030727&plaTypeName=%E9%9C%80%E6%B1%82%E5%85%AC%E5%91%8A&pageNo=1&jsonpCallback=callback',
          async: false,
          dataType: "jsonp",
          jsonp: "callback",//传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(一般默认为:callback)
          jsonpCallback:"callback",//自定义的jsonp回调函数名,默认未jquery自动生成的随机函数名,也可以写“?”jquery会自动处理
          success: function(msg){
                  var data = msg.gctPlacardDimenList;
				  var pages = msg.totalPages;
				    console.log(pages + "===============================");
				  $.each(data, function(i, obj){
					console.log(obj.plaTitle);
				  });
		  }
              
		});
		
		});
	})





//区域事件选择配送点
function changeDistrict(value){
   if(value == 0){
    	 $('#transport_node').empty();
    	 $('#transport_node').append('<option value="0">请选择</option>');
    	 return;
   }
   $('#transport_node').empty();
   $('#transport_node').append('<option value="0">加载中...</option>');
   $.ajax({
  type: 'GET',
  url: "http://192.168.33.114:8080/UIDTraceAdmin/transportnode/pagelist/jsonp?callbackFunction=jsonpCallback",
  async: false,
  dataType: "jsonp",
  jsonp: "jsonpCallback",//传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(一般默认为:callback)
  success: function(o){},
  timeout:3000  
     });
 }

function jsonpCallback(result) {   
   if(result.success == true){		
    	 $('#transport_node').empty();
    	 $('#transport_node').append('<option value="0">请选择</option>');
  $.each(result.transportList, function(i, n){
         	 var html = '<option value="'+n.nodeId+'">'+n.transportnodeName+'</option>';
      $('#transport_node').append(html) 
  });
      }else{
       	 $('#transport_node').empty();
       	 $('#transport_node').append('<option value="0">请选择</option>');
      } 
}


@RequestMapping("/pagelist/jsonp")
  public void pagelist(@ModelAttribute TransportNode node,HttpServletRequest httpReq,
      HttpSession session,HttpServletResponse response) {
    
    //返回头部设置  
  response.setHeader("Pragma", "No-cache");  
  response.setHeader("Cache-Control", "no-cache"); 
  response.setHeader("Content-type", "application/x-javascript;charset=utf-8");
  response.setDateHeader("Expires", 0);  
  
  String jsonpCallback = httpReq.getParameter("callbackFunction");//jsonp回调函数名 
  JSONObject resultJson  = new JSONObject(); 
  PrintWriter out = null;      
    try {
      out = response.getWriter();
    } catch (IOException e1) {
      e1.printStackTrace();
    }  
    try {
      node.setRowStart((node.getPage() - 1) * node.getRows() + 1);
      node.setRowEnd(node.getPage() * node.getRows());
              		    
      resultJson.put("transportList", JsonUtils.toJSONList(business.getList(node)));
      resultJson.put("success", true);    
        System.out.println(resultJson.toString());
    out.println(jsonpCallback+"("+resultJson.toString()+")");//返回jsonp格式数据  
    out.flush();  
    out.close();  
    
    } catch (Exception e) {
      LogWriter.log("/pagelist/jsonp",e);
      try {
        resultJson.put("success", false);
      } catch (JSONException e1) {
        e1.printStackTrace();
      }     
        out.println(jsonpCallback+"("+resultJson.toString()+")");//返回jsonp格式数据  
    out.flush();  
    out.close();  
    }



注意要点:

1.设置响应报文头,response.setHeader("Content-type", "application/x-javascript;charset=utf-8");,消除了"Resource interpreted as Script but transferred with MIME type text/plain",同时要根据自己的编码格式设置正确的编码;

2.jsonp的数据格式是:jsonpCallback+"("+resultJson.toString()+")"

举个例子:

jsonpCallback({

    "code": "aaa",

    "price": 1780,

    "tickets": 5

});
分享到:
评论

相关推荐

    Jsonp和java操作

    使用jQuery的`$.getJSON`方法也可以实现JSONP: ```javascript $.getJSON("http://localhost:8080/Jsonp/jsonp.jsp?callback=?", function(json) { alert(json[0].name); }); ``` 在jQuery的示例中,`...

    axios-jsonp:适用于axios的jsonp适配器

    适用于axios的jsonp适配器支持承诺,支持取消,与xhr相同安装npm install axios-jsonp用法let axios = require('axios');let jsonpAdapter = require('axios-jsonp');axios({ url: '/jsonp', adapter: jsonpAdapter,...

    js跨域jsonp的使用

    ### JSONP 使用步骤 1. **定义回调函数**:在客户端,首先我们需要定义一个函数,这个函数将处理返回的JSON数据。例如,我们可以定义一个名为`handleData`的函数: ```javascript function handleData(data) { ...

    json和jsonp数据格式返回

    JSON(JavaScript Object Notation)和JSONP(JSON with Padding)是两种常见的数据交换格式,尤其在Web开发中广泛使用。本文将深入探讨这两种格式的特点、用途以及它们在跨域数据请求中的作用。 **1. JSON简介** ...

    跨域访问解决方法-jsonp

    跨域访问是Web开发中一个常见的挑战,尤其是在进行Ajax异步请求时,浏览器的同源策略(Same-origin policy)会限制JavaScript从一个源获取另一...理解JSONP的工作原理和使用方法对于任何Web开发者来说都是非常重要的。

    jsonp示例2则

    这里使用jQuery的`$.ajax`方法,因为其内置了对JSONP的支持: ```html &lt;!DOCTYPE html&gt; &lt;title&gt;JSONP Example &lt;script src="https://code.jquery.com/jquery-3.6.0.min.js"&gt;&lt;/script&gt; $(document).ready...

    JSONP解决跨域问题

    在本场景中,前端使用jQuery库,通过设置`dataType`为`jsonp`来发起JSONP请求,而服务端使用C#编写的Web Service来响应这个请求。 首先,我们来看服务端的C# Web Service代码。在C#中,我们需要创建一个支持JSONP的...

    jsonp 使用例子

    在Web开发中,由于浏览器的同源策略限制,通常JavaScript无法直接访问不同源的资源,但JSONP提供了一种规避这种限制的方法。下面将详细讲解JSONP的工作原理、使用场景以及如何实现JSONP。 **1. JSONP的工作原理** ...

    jsonp原理.txt

    JSONP(JSON with Padding)是一种用于解决浏览器同源策略限制的方法,允许网页从不同域名的服务器上加载数据。它利用了`&lt;script&gt;`标签不受同源策略限制的特点来实现跨域数据获取。 #### 二、JSONP的工作原理 在...

    使用JSONP完成HTTP和HTTPS之间的跨域访问

    在浏览器的同源策略限制下,`XMLHttpRequest`对象不能从不同的域发起请求,而JSONP则是绕过这种限制的一种方法。它的工作原理是动态创建一个`&lt;script&gt;`标签,并将其src属性设置为目标URL,其中目标URL包含了回调函数...

    asp.net+jquery Jsonp使用方法

    2. Jsonp的基本使用方法: Jsonp的使用涉及到客户端和服务端的配合。服务端需要能够接收一个callback参数,并且按照客户端指定的callback函数名返回格式化的JSON字符串。客户端则通过动态创建script标签的方式来发送...

    VUE2.0中Jsonp的使用方法

    ### VUE2.0中JSONP的使用方法 #### 1. 引入JSONP依赖 在VUE2.0项目中使用JSONP时,首先需要安装JSONP的npm包。使用npm安装命令: ```shell npm install jsonp --save ``` 然后在项目根目录下的`package.json`...

    Jsonp+asp.net

    在标题"Jsonp+asp.net"中,我们可以理解为这个项目或教程是关于如何在ASP.NET环境下使用JSONP与前端交互数据的。ASP.NET是微软开发的一种Web应用程序框架,它提供了丰富的功能和工具来构建动态网站、Web应用和服务。...

    Ajax结合Jsonp实例

    总结起来,Ajax与Jsonp的结合使用能够让我们在Jquery中轻松地实现跨域数据交互,从而提升Web应用的功能性和用户体验。在实际开发中,需要注意处理可能出现的错误情况,以及合理设计API接口的调用,以保证应用的稳定...

    Ajax跨域请求解决方案-JSONP

    - 使用jQuery或其他库的Ajax方法,通过`jsonp`参数指定回调函数名。例如,`$.ajax({ url: 'http://example.com/api/data', dataType: 'jsonp', jsonp: 'callback' })`。 - 在服务器响应之前,浏览器会在当前页面中...

    jsonp源码以及jar包

    6. **JSONP的使用**:虽然`jsoup`自身并不直接支持JSONP,但你可以配合使用其他Java库(如`HttpURLConnection`或`Apache HttpClient`)来发送JSONP请求。你需要构造一个动态生成的回调函数名,将这个函数名作为参数...

    使用Jsonp方式跨域获取json

    在Web开发中,由于浏览器的同源策略限制,JavaScript通常无法直接访问不同源的资源,但JSONP提供了一种规避这种限制的方法。以下是关于JSONP的详细介绍: 1. JSONP的概念: JSONP是一种非官方的数据交换格式,它...

    PHP AJAX JSONP实现跨域请求使用范例_ajax如何解决跨域请求

    在这个实例中,我们使用 jQuery 的.ajax() 方法来发送 POST 请求,并指定 dataType 为 jsonp,以便使用 JSONP。 ```javascript $.ajax({ type: "post", url: "ajax.php", dataType: "jsonp", jsonp: "callback...

    Jsonp 关键字详解及json和jsonp的区别,ajax和jsonp的区别

    2. JSONP是实现跨域请求的一种方法,它的关键在于使用`&lt;script&gt;`标签来绕过同源策略。 3. JSON数据格式简单且易于机器解析,而JSONP是实现跨域请求的一种手段,并且只能用于GET请求。 再来看AJAX和JSONP的区别: 1....

    .net3.5 WCF实现jsonp

    客户端(通常是网页中的JavaScript)可以使用AJAX请求服务,设置`dataType`为`jsonp`,并指定回调函数名。例如,使用jQuery: ```javascript $.ajax({ url: 'http://yourwcfserver/Service.svc/GetData', ...

Global site tag (gtag.js) - Google Analytics