作者在 2011-11-29 14:56:46 发布以下内容
//客户端请求
$(document).ready(function(){
$("#c").click(function(){
/*$.getJSON("http://localhost/test?jsoncallback=?", function(data){
alert(data["a"]);
});*/
$.ajax({
url:"http://localhost/test/index.jsp",
type:"GET",
cache:false,
dataType:"jsonp",
jsonp:"jsoncallback",
success:function(data){
alert(data['a']);
}
});
});
});
$(document).ready(function(){
$("#c").click(function(){
/*$.getJSON("http://localhost/test?jsoncallback=?", function(data){
alert(data["a"]);
});*/
$.ajax({
url:"http://localhost/test/index.jsp",
type:"GET",
cache:false,
dataType:"jsonp",
jsonp:"jsoncallback",
success:function(data){
alert(data['a']);
}
});
});
});
//服务端响应
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%String jsoncallback = request.getParameter("jsoncallback");
out.println(jsoncallback+"({a:'b'})");
//注意输出内容为:获取的jsoncallback值+括号,括号中为json字符串
%>
其中jsoncallback为客户端与服务段交互的通道,jquery会生成一个临时的对象赋值给jsoncallback,<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%String jsoncallback = request.getParameter("jsoncallback");
out.println(jsoncallback+"({a:'b'})");
//注意输出内容为:获取的jsoncallback值+括号,括号中为json字符串
%>
并将这个对象发送到服务端,服务端获取到这个对象后对其赋值(即对象的属性),然后返回给客户端,
jquery再次获取到这个对象后封装为data,data就是我们请求的json对象,可以拿到他的值了。