weixin_42408472 2010-12-30 22:56
浏览 251
已采纳

jquery1.4.4 ajax json 在struts2.2.1中没法封装对象,求解脱

才学着用jquery的ajax,用json封装对象在action中找不到,求大神帮看下:
js:
[code="java"]
$("#editViewMethod").click(function(){
var ids = "";
var flag = 0;
var jsonStr = "";
$("input[type='checkbox'][name!='checkAll']").each(function(){
if($(this).attr("checked")){
flag = flag + 1;
ids = ids+","+$(this).attr("value");
}
});
if(flag == 0){
alert("您没有选择!");
}else if(flag > 1){
alert("请选择一条记录!");
}else{

                alert("ids="+ids);
                jsonStr = '["0","5"]';
                //alert(jsonStr);
                //$.post("delServerMethod.do",{"idList":jsonStr}, delMethod,"json");
                var para = {"idList":"[\"0\",\"5\"]"};
                var para1 = {"methods.methodId":"5","methods.methodName":"1"}; 

                var p = jQuery.parseJSON(para1);
                $.ajax({
                    type: "POST",
                    url: "json/editServerMethod.do",
                    data: para1,
                    dateType:"json",
                    error: function(){
                        alert("Error loading json Object");
                    },
                    success: function(data){
                        alert(data);
                        //$.each(json,function(i,n){
                        //  alert("Key:"+i);
                        //  alert("Value:"+n);
                        //});
                        //var jsonMsg = JSON.stringify(json);
                        //alert(jsonMsg);
                        alert(data.methods.methodId);
                    }
                }); 
            }
        });

[/code]

上面是js部分
[code="java"]

<package name="ajaxJson" namespace="/soms_sys/cdn/serverManager/json" extends="json-default" >
    <action name="delServerMethod" method="delServerMethod" class="com.jwzt.soms.cdn.action.CdnServMethodAct">
        <result name="del_success" type="json">
            <param name="includeProperties">message</param>
        </result>
    </action>
    <action name="editServerMethod" method="editServerMethod" class="com.jwzt.soms.cdn.action.CdnServMethodAct">
        <result name="edit_success" type="json">
            <param name="includeProperties">methods\.*</param>
            <param name="excludeProperties">methods\.soms4CdnServer</param>
        </result>
    </action>
</package>

[/code]

[code="java"]
@SuppressWarnings("serial")
public class CdnServMethodAct extends JeeCoreAction
{
protected static Logger logger = LoggerFactory.getLogger(CdnServerAct.class);

private Soms4CdnAccessMethods methods;
private List<String> idList;
private String ids;
private String message;

public String  delServerMethod(){
    String id = idList.get(0);//methods.getMethodId();
    System.out.println("get Method Id from ajax json:"+id);
    this.setMessage("success");
    System.out.println("json return =="+this.getMessage());
    idList = new ArrayList<String>();
    idList.add("1");
    idList.add("2");
    return "del_success";
}

public String  editServerMethod(){
    String id = idList.get(0);//methods.getMethodId();
    System.out.println("get Method Id from ajax json:"+id);
    this.setMessage("success");
    System.out.println("json return =="+this.getMessage());
    idList = new ArrayList<String>();
    idList.add("1");
    idList.add("2");
    methods.setMethodId(5);
    methods.setMethodName("test");
    return "edit_success";
}

public Soms4CdnAccessMethods getMethods()
{
    return methods;
}

public void setMethods(Soms4CdnAccessMethods methods)
{
    System.out.println("进来了,我是JSON...............");
    System.out.println("Soms4CdnAccessMethods...............");
    System.out.println("methods.name="+methods.getMethodName());
    this.methods = methods;
}

public List<String> getIdList()
{
    return idList;
}

public void setIdList(List<String> idList)
{
    System.out.println("进来了,我是JSON...............");
    System.out.println("list长度==="+idList.size());
    System.out.println("idList[0]="+idList.get(0));
    this.idList = idList;
}

//setter or getter
[/code]

死活出不来

这个包:
commons-collections-3.2.jar
commons-lang-2.3.jar
commons-logging-1.0.4.jar
ezmorph-1.0.3.jar
json-lib-2.1-jdk15.jar
struts2-json-plugin-2.2.1.jar

[code="java"]
2010-12-30 10:51 WARN c.j.c.h.HibernateSessionFilter - HibernateSessionFilter begin doChain
进来了,我是JSON...............
Soms4CdnAccessMethods...............
methods.name=null
[/code]

证明是能进action的 但前面ajax总是error
data用para也能进action,但idList总是第一个有值
[code="java"]
2010-12-30 10:56 WARN c.j.c.h.HibernateSessionFilter - HibernateSessionFilter begin doChain
进来了,我是JSON...............
list长度===1
idList[0]=["0","5"]
get Method Id from ajax json:["0","5"]
json return ==success
[/code]

这是怎么回事?
向各位大神求教..
急 急 急

  • 写回答

9条回答 默认 最新

  • andy_javahome 2010-12-31 10:56
    关注

    var para1 = {"methods.methodId":"5","methods.methodName":"1"};这种传参方式是无法传对象过去的,跟你配置和用什么技术没啥关系,我是没传成功过,起码我常用的jQuery的高级封装方法$.get 和$.post 是没成功过。
    我的方法怎么会不行呢 ,不可能的事儿呀 :cry: 。我们经常用这个种方式啊 data :"methods.methodId=5&methods.methodName=1";

    你仔细检查一下,我用那种方法写从来都是可以的。
    我还有一种本方法,这个是当你需要穿多个参数的时候用的,
    将你的参数放到input里 用form包起来 如:


    你的js参数改成 data : $('#myform).serialize(),
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(8条)

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 MATLAB动图问题
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名