跨域访问

需求:静态的html访问另外一个域名 取数据。

用到的jquery的getJSON方法:$.getJSON(url,params,function(){数据处理})。其中url="域名/actionName?jsonpcallback=?";

后面这个jquery会在执行的时候自动生成一个随机数。

后台action

1、属性jsonpcallback 要有get、set方法  (这里属性值域url中的jsonpcallback要一致)

2、action类实现ServletResponseAware接口

3、输出 out.println(this.jsonpcallback + "(" + str + ")") ;其中str要是json的形式

注意:服务端得到callback的数值后,要用jsonp1236827957501(......)把将要输出的json内容包括起来此时,服务器生成 json 数据才能被客户端正确接收。

4、struts配置文件<action name="getSortJson" class="ClassAction" method="getSortJson"></action>

public class ClassAction extends ActionSupport implements ServletResponseAware{

    /**
     * 这里我指定了放回的类型 "text/json" 也可以是xml等其他类型
     * 用response直接将数据打回到跨域页面的 ajax 的请求里面去
     */
    public void printToJson(String str) throws IOException{
        response.setCharacterEncoding("UTF-8");
        response.setContentType("text/json");
        response.setDateHeader("Expires", 0);
        PrintWriter out = response.getWriter();
        out.println(this.jsonpcallback + "(" + str + ")");
        out.flush();
        out.close();
    }

 }

posted on 2011-03-10 08:13  缘^_^  阅读(190)  评论(0)    收藏  举报

导航