var item = $('input[@name=duration][@checked]').val();
$('#showForm').action = "/action/employee.do?method=queryPersonalMeasure&duration_id='"+item+"'"+'&duration_id1='+item;
$('#showForm').submit();后台request.getParamter("duration_id") 死也获取不到参数,大家有没有碰到过。。Jquery和struts1.2整合后,Form提交时,如何把参数带过去,注意:不是Ajax,就是一般的提交到后台处理,为什么用上面那种写法,参数无法取到呢?加了个Jquery,连struts以前form.action 指定URL(包括参数)然后submit()就不行了呢?
分不够再加

解决方案 »

  1.   

    '"+item+"'"+'&duration_id1='+item;
    为何要加单引号呢。
    看你的提交路径是否正确
      

  2.   

    你用alert把item值打印出来看下有没有值
      

  3.   

    $('#showForm').action = "/action/employee.do?meth.......你这么写是在showForm的映射的jquery对象加上了一个action属性,而不是对原始的DOM对象form中的action中赋值,所以你这么写和没写一样你要么document.getElementByID('showForm').action=.....
    要么$('#showForm').get(0).action=......其中get()方法是取到jquery中的原始DOM对象,具体用法请查一下API另:那个ITEM不能加引号,否则你取的值就永远是item字符串了
      

  4.   

    $('#showForm').action = "/action/employee.do?method=queryPersonalMeasure&duration_id='"+item+"'"+'&duration_id1='+item; 改成:var str = "/action/employee.do?method=queryPersonalMeasure&duration_id='"+item+"'"+'&duration_id1='+item;
    $('#showForm').attr("action",str);
      

  5.   


    你说的不对,这样可以提交,参数可以传递,我本机可以了,不过传过去的URL参数,变量名给我改了名字,变量名是单选按钮的ID,而不是我自己手写的duration_ID
      

  6.   

    1 请把单引号去掉2 jquery新版本(似乎是1.2.6以后)已经不支持@形式,请吧@去掉,改为
    var item = $('input[name=duration][checked]').val(); 3 如果是checkbox,该语句只能得到第一个值
      

  7.   

    form的action属性不能加参数。。
    为每个参数提供一个隐藏表单域, 使用jQuery动态修改他就行了..
      

  8.   


    有没有办法将request中所有的参数传过去? 调试发现 ajax跳转到后台后 使用request.getParameterNames(),发现很多参数都没有获取到,因为我在 data:{}中没有指定这么多
      

  9.   


    当然可以提交了,因为即使你form的action属性没有赋上值,如果你的form用struts标签的话,本身form是有自己的默认提交action属性的。之所以“传过去的URL参数,变量名给我改了名字,变量名是单选按钮的ID”,不就是因为执行了默认的表单提交而没有按你的URL提交么?如果直接submit按扭提交,不用JS提交的话,不就是你现在这种情况么?
      

  10.   

    楼主没有理解ajax的基本方式,ajax提交也包括get和post两种,get是通过js把参数拼接到url后面,post是通过js把参数拼接成用&分割的字符串,然后send到后方,所以不管哪种方式都必须用js拼接字符换,你的val()得到的就是1个值,所以后台只能得到一个值jquery有一个plugin叫做ajaxForm,他已经完成了ajax表单提交功能,楼主自己去jquery网站下载吧,具体用法只能自己去看他的doc了
      

  11.   

    var item = $('input[name=duration][checked]').val(); 
    var item = $('input[name=duration]:checked')得到的是一个数组对象。 
      

  12.   

    var parameter = {};
    $("input[type=hidden]", $("form")).each(function(){
    var key = this.name;
    var value = this.value;
    parameter[key] = value;
    });$("input[type=text]", $("form")).each(function(){
    var key = this.name;
    var value = this.value;
    parameter[key] = value;
    });
    $.ajax({
    async: false,
    type: "POST",
      url: url+"/action/manager.do", 
      data: parameter,
      dataType: "json",
      success: function(resp){
      if(resp.executeSuccess == 0){
    alert(" <bean:message key='HC000.SAVED_SUCCESS' />");
    }else{
    alert(" <bean:message key='HC000.SAVED_FAIL' />");
      }},
      error: function(msg){  
      alert(" <bean:message key='HC000.SAVED_FAIL' />");
      }
    }); 我把form里面所有text和hidden参数都传过去了,可以获取值了
      

  13.   

    1 请把单引号去掉 2 jquery新版本(似乎是1.2.6以后)已经不支持@形式,请吧@去掉,改为 
    var item = $('input[name=duration][checked]').val(); 3 如果是checkbox,该语句只能得到第一个值
      

  14.   

    有个很奇怪的问题,就是ajax提交到后台做更新后,没有发生任何异常
    然后用下面的方式回传信息
    JSONObject json = new JSONObject();
    json.put("executeSuccess", iExecuteSuccess);//成功回传0
    response.setHeader("Content-Type", "text/plain;charset=UTF-8");
    out = response.getOutputStream();
    out.write(json.toString().getBytes("UTF-8"));
    out.flush();怎么到页面
    success: function(resp){
      if(resp.executeSuccess == 0){
    alert(" <bean:message key='HC000.SAVED_SUCCESS' />");
    }else{
    alert(" <bean:message key='HC000.SAVED_FAIL' />");
      }}, 
    resp.executeSuccess 的值 是 undefined呢????????
      

  15.   

    楼主的传递方式是错误的,post传递的都是单值的,只不过是如果key相同的话,后台可以用数组方式接收
    不是传递javascript的数组,而是这种形式传递参数
    url: url+"/action/manager.do",
    data: 'str=a&str=b&str=c......', 这样后台用String str[]  = request.getParameterValues("str");不会有问题
      

  16.   

    参数传递已经可以了,先不管哪种方式,先解决我程式没有任何异常,ajax执行结果怎么会跳到 error: function(msg){ 
      alert(" <bean:message key='HC000.SAVED_FAIL' />");
      } 、
    这一块呢
      

  17.   

    response.setHeader("Content-Type", "text/plain;charset=UTF-8"); 设置的有问题,不是文本时json
    另外调试一下,返回的是否是json的规则既然值传递一个符号,为何要用json ?
    直接
    response.setContentType("text/json");
    response.getWriter().print(flag);
    success: function(resp){
      if(resp== 0){ ......
      

  18.   


    返回的可能不只一个符号,可能有其他状态值,这里只是举例关键是程序执行没有异常,返回时却不会走 success: function(resp){
      if(resp== 0){ ......
    他会执行 error: function(msg){
      alert(" <bean:message key='HC000.SAVED_FAIL' />");
      } 、 
      

  19.   

    var datastr="EmployeeCD="+emc+"&eTime="+nowDate+"&UserCD="+userCD+"&sTime="+MathDate(nowDate,30);
    $.ajax
              {
          url:'existCheck.action',
      type: "POST",
      dataType:"resposeText",
      data:datastr,
       success:function(msg) {//success 
     
    var contents = eval('(' + msg + ')');
           $("#existlFlg").val(contents.existFlg);      
    }
    },
       error:function(){
       alert("error");
    )
    这个是我用的一个方法 不知道对楼主有没有帮助 返回的数据类型msg是json类型的 我转换了一下 如上面的可以直接获得contents.你返回的属性名 至于程序跑到eroor那里 原因有好几种可能,struct 的配置,后台代码的错误都会导致ajax返回的状态错误 这个得你自己调查了
      

  20.   

    看来LZ是没怎么用过JQUERY,建议你查一下API
      

  21.   


    哎,昨天才开始用JQuery,现在正对着API看呢
    25楼的  struts 的配置也会影响????? 这个怎么说呢,我看了 执行返回的 status是 200,证明执行没问题,而且我程式也没有异常,按你这样说,是struts配置问题咯,那怎么配会影响呢。
      

  22.   

    <action name="existCheck" class="DailyReport.DailyReportSubmitAction" method="ExistCheck">
    <result type="json"></result>
    </action>
    返回结果类型 设置了吗 json类型的
      

  23.   

    response.setHeader("Content-Type", "text/json;charset=UTF-8");
      

  24.   

    大家先不要计较返回信息的类型是不是 JSON关键是 程式根本就不会走 success定义的函数里,他运行了 error:function定义的函数
      

  25.   

    程式没有异常,调试查看 status返回码是 200(证明没问题,可问什么JQuery会走 error:function里面的东西)
      

  26.   

    jquery 新手 飄過﹗﹗
    幫頂﹗
      

  27.   

    var item = $('input[@name=duration][@checked]').val(); 
    $('#showForm').action = "/action/employee.do?method=queryPersonalMeasure&duration_id='"+item+"'"+'&duration_id1='+item; 
    $('#showForm').submit(); 
      

  28.   

    看来要重新开一个版子了,题目和现在的问题完全不对了,参数传递问题已经搞定,目前是Ajax返回时状态的问题response.setHeader("Content-Type", "text/plain;charset=UTF-8"); dataType:'json'       返回会走 error:function
    response.setHeader("Content-Type", "text/json;charset=UTF-8");  dataType:'json'       返回会走 error:function 

    程式没有异常,返回状态为 200,那这里的contentType要设置成什么样子,才会到 success:function
      

  29.   

    你将msg打出来,如果是parserror的话,证明你传到页面的json数据有错,dataType设为json的话,jquery会自动先将后台传来的值按JSON格式转化为javascript对象。程式没有异常,返回状态为 200只能证明ajax调用没有错而已,但jquery本身又对ajax的原生调用包装了一层
      

  30.   

    window.location="/**.do?action="+action+"&duration_id1="+id;
      

  31.   

    var item = $('input[@name=duration][@checked]').val();
    window.location= "/action/employee.do?method=queryPersonalMeasure&duration_id='"+item+"'"+'&duration_id1='+item; 
      

  32.   

    var item = $('input[@name=duration][@checked]').val();
    window.location= "/action/employee.do?method=queryPersonalMeasure&duration_id="+item;