今天搞了一下jquery的$.getJSON(sUrl,mData,fCallback);
这个可以跨域请求,
参考jquery api demo很容易搞定
不过在请求自己的action时回调函数无效
js
$("#btn_json").click(function(){
//通过时间骗过浏览器缓存
$.getJSON("example/autocomplete.action?random="+(new Date()).getTime(),null,function(json){
// alert(json.results[3].name);
$.each(json.results,function(i,item){
$("#email").append("<h1>"+item.name+"</h1>"+"to:"+item.to);
});
});
});
html
<div id="getJSon">
<input type="text" name="json" value="" id="json">
<input type="button" id="btn_json" value="loadjson"/>
<div id="email"></div>
</div>
action
@Override
public String execute() throws Exception {
servletResponse.setCharacterEncoding("UTF-8");
servletRequest.getParameter("name");
String value = "{\"results\":[{\"name\":\"Peter pan\",\"to\":\"peter@陈.de\"}," +//这里就是问题的关
//键:json数据的key必须加引号,否则$.getJSON方法解析不了,就不会调用回调函数
"{ \"name\": \"Molly\", \"to\": \"molly@yahoo.com\" }," +
"{ \"name\": \"Master <em>Sync</em>\", \"to\": \"205bw@samsung.com\" }," +
"{ \"name\": \"Don Corleone\", \"to\": \"don@vegas.com\" }," +
"{ \"name\": \"Donnie Darko\", \"to\": \"dd@timeshift.info\"}"+
"]}";
PrintWriter out = servletResponse.getWriter();
out.println(value);
out.flush();
out.close();
return null;
}
一开始网上看了些资料,什么缓存,什么什么的,浮云啊
希望对碰到同样问题的同学们有用