客户端:
<script type="text/javascript">
function jsonpCallback(result){
alert(result[1].name);
}
</script>
<script type="text/javascript"src="http://test.abc.com/Jsonp/jsonp.jsp?callback=jsonpCallback"></script>
或者
<script type="text/javascript">
$.getJSON("http://test.abc.com/Jsonp/jsonp.jsp?callback=?", function(json){
alert(json[0].name);
});
</script>
或者
$.ajax({
type : "get",
async:false,
url : "http://test.abc.com/base/Jsonp/jsonp.jsp",
dataType : "jsonp", //数据类型为jsonp
jsonp: "jsonpCallback", //服务端用于接收callback调用的function名的参数
success : function(data){
$("#showcontent").text("Result:"+data.result)
},
error:function(){
alert('fail');
}
});
服务端(jsonp.jsp代码):
<%
String callback = request.getParameter("callback");
out.print(callback+"([ { name:'John',age:'19'},{ name:'joe',age:'20'}] );");
out.print(callback);
%>
=====示例2======
Java代码:
@RequestMapping("/lottery_addr.action")
@ResponseBody
public String lottery_address(String lotteryCode, String callback) throws Exception{
HashMap ret = new HashMap();
ret.put("responseCode", "0");
ret.put("responseMessage", "success");
HashMap result = new HashMap();
result.put("pin", System.currentTimeMillis());
result.put("winner", "true");
ret.put("data", result);
ObjectMapper mapper = new ObjectMapper();
String str = mapper.writeValueAsString(ret);
return callback + "(" + str + ");";
}
js代码:
$.ajax({
type: "get",
async: false,
url: "http://192.168.1.110:8080/lottery_addr.action",
data: {lotteryCode:'act1'},
dataType: "jsonp",
jsonp: "callback", //传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(一般默认为:callback)
jsonpCallback:"jsonpBack",//自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名,也可以写"?",jQuery会自动为你处理数据
success: function(json){
// 在这里处理业务逻辑即可
},
error: function(){
//alert('fail');
}
});