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
});
分享到:
相关推荐
使用jQuery的`$.getJSON`方法也可以实现JSONP: ```javascript $.getJSON("http://localhost:8080/Jsonp/jsonp.jsp?callback=?", function(json) { alert(json[0].name); }); ``` 在jQuery的示例中,`...
适用于axios的jsonp适配器支持承诺,支持取消,与xhr相同安装npm install axios-jsonp用法let axios = require('axios');let jsonpAdapter = require('axios-jsonp');axios({ url: '/jsonp', adapter: jsonpAdapter,...
### JSONP 使用步骤 1. **定义回调函数**:在客户端,首先我们需要定义一个函数,这个函数将处理返回的JSON数据。例如,我们可以定义一个名为`handleData`的函数: ```javascript function handleData(data) { ...
JSON(JavaScript Object Notation)和JSONP(JSON with Padding)是两种常见的数据交换格式,尤其在Web开发中广泛使用。本文将深入探讨这两种格式的特点、用途以及它们在跨域数据请求中的作用。 **1. JSON简介** ...
跨域访问是Web开发中一个常见的挑战,尤其是在进行Ajax异步请求时,浏览器的同源策略(Same-origin policy)会限制JavaScript从一个源获取另一...理解JSONP的工作原理和使用方法对于任何Web开发者来说都是非常重要的。
这里使用jQuery的`$.ajax`方法,因为其内置了对JSONP的支持: ```html <!DOCTYPE html> <title>JSONP Example <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> $(document).ready...
在本场景中,前端使用jQuery库,通过设置`dataType`为`jsonp`来发起JSONP请求,而服务端使用C#编写的Web Service来响应这个请求。 首先,我们来看服务端的C# Web Service代码。在C#中,我们需要创建一个支持JSONP的...
在Web开发中,由于浏览器的同源策略限制,通常JavaScript无法直接访问不同源的资源,但JSONP提供了一种规避这种限制的方法。下面将详细讲解JSONP的工作原理、使用场景以及如何实现JSONP。 **1. JSONP的工作原理** ...
JSONP(JSON with Padding)是一种用于解决浏览器同源策略限制的方法,允许网页从不同域名的服务器上加载数据。它利用了`<script>`标签不受同源策略限制的特点来实现跨域数据获取。 #### 二、JSONP的工作原理 在...
在浏览器的同源策略限制下,`XMLHttpRequest`对象不能从不同的域发起请求,而JSONP则是绕过这种限制的一种方法。它的工作原理是动态创建一个`<script>`标签,并将其src属性设置为目标URL,其中目标URL包含了回调函数...
2. Jsonp的基本使用方法: Jsonp的使用涉及到客户端和服务端的配合。服务端需要能够接收一个callback参数,并且按照客户端指定的callback函数名返回格式化的JSON字符串。客户端则通过动态创建script标签的方式来发送...
### VUE2.0中JSONP的使用方法 #### 1. 引入JSONP依赖 在VUE2.0项目中使用JSONP时,首先需要安装JSONP的npm包。使用npm安装命令: ```shell npm install jsonp --save ``` 然后在项目根目录下的`package.json`...
在标题"Jsonp+asp.net"中,我们可以理解为这个项目或教程是关于如何在ASP.NET环境下使用JSONP与前端交互数据的。ASP.NET是微软开发的一种Web应用程序框架,它提供了丰富的功能和工具来构建动态网站、Web应用和服务。...
总结起来,Ajax与Jsonp的结合使用能够让我们在Jquery中轻松地实现跨域数据交互,从而提升Web应用的功能性和用户体验。在实际开发中,需要注意处理可能出现的错误情况,以及合理设计API接口的调用,以保证应用的稳定...
- 使用jQuery或其他库的Ajax方法,通过`jsonp`参数指定回调函数名。例如,`$.ajax({ url: 'http://example.com/api/data', dataType: 'jsonp', jsonp: 'callback' })`。 - 在服务器响应之前,浏览器会在当前页面中...
6. **JSONP的使用**:虽然`jsoup`自身并不直接支持JSONP,但你可以配合使用其他Java库(如`HttpURLConnection`或`Apache HttpClient`)来发送JSONP请求。你需要构造一个动态生成的回调函数名,将这个函数名作为参数...
在Web开发中,由于浏览器的同源策略限制,JavaScript通常无法直接访问不同源的资源,但JSONP提供了一种规避这种限制的方法。以下是关于JSONP的详细介绍: 1. JSONP的概念: JSONP是一种非官方的数据交换格式,它...
在这个实例中,我们使用 jQuery 的.ajax() 方法来发送 POST 请求,并指定 dataType 为 jsonp,以便使用 JSONP。 ```javascript $.ajax({ type: "post", url: "ajax.php", dataType: "jsonp", jsonp: "callback...
2. JSONP是实现跨域请求的一种方法,它的关键在于使用`<script>`标签来绕过同源策略。 3. JSON数据格式简单且易于机器解析,而JSONP是实现跨域请求的一种手段,并且只能用于GET请求。 再来看AJAX和JSONP的区别: 1....
客户端(通常是网页中的JavaScript)可以使用AJAX请求服务,设置`dataType`为`jsonp`,并指定回调函数名。例如,使用jQuery: ```javascript $.ajax({ url: 'http://yourwcfserver/Service.svc/GetData', ...