日期:2014-05-17  浏览次数:20830 次

struts2 jquery 整合Ajax问题
struts.xml配置如下:
 
      <package name="ajax" extends="json-default">
        <action name="AddNew" class="com.action.AddNewAction"  method="AddNew">
            <result name="success" type="json">
             <param name="root">result</param>
            </result>
        </action>
     </package>

JavaScript代码如下:

   function clickButton()
   {    

       var url = 'AddNew.action';
       var params = {
               SqlIndex:${SqlIndex},
               PeriodId:${PeriodId}
       };
       jQuery.post(url, params, callbackFun,'json');


   }
   function callbackFun(data)
   {

       alert(data);//对应HelloWorld类的message属性
           //获取数据后渲染页面
   }

java Action如下:
	private String result;
public String AddNew() throws Exception
{
result = “调用成功”;
return SUCCESS;
}
public void setResult(String result) {
this.result = result;
}
public String getResult() {
return result;
}

跟踪发现能够执行Action代码,但是没有调用jquery.post的回调函数。
把 jQuery.post(url, params, callbackFun,'json');改成
 jQuery.post(url, params, callbackFun,'text');
能够调用回调函数,但是传回的data确实整个页面的内容,不是我想要的result。
请高手指点!
------解决方案--------------------


result =JSONUtil.serialize(“调用成功”) ;
------解决方案--------------------
回调函数弹 alert(data.result);试试看
------解决方案--------------------
private JSONObject result; 返回应该是jsonobject类型
------解决方案--------------------
你设置的是回传类型是json,就必须传回json,至于json类型,你看下,可以自己拼接json串也可以借助util类
------解决方案--------------------
转换
------解决方案--------------------
引用:
你设置的是回传类型是json,就必须传回json,至于json类型,你看下,可以自己拼接json串也可以借助util类

jQuery.post(url, params, callbackFun,'json');
json改成text不是目的,你得调查下为啥json的情况下不能调回调函数啊。
用json的话返回的date是com.action.AddNewAction这个对象,所以date.result应该可以取出来,至于text的时候返回的是啥不太清楚。。
------解决方案--------------------
格式问题。
------解决方案--------------------
引用:
Quote: 引用:

你设置的是回传类型是json,就必须传回json,至于json类型,你看下,可以自己拼接json串也可以借助util类

jQuery.post(url, params, c