0

在继续从 struts1.2 中的 ajax 调用以下操作

我正在尝试使用 struts2。我试过以下代码:

function onChangeProduct(){
  var name = $('#product').val();   
   alert(name);
  $.ajax({  
    type: "POST",  
    url: "/SampleAjax/getProduct.do",  
    data: "name=" + name,  
    success: function(response){  
      // we have the response  
      $('#info').html(response);  
    },  
    error: function(e){  
      alert('Error: ' + e);  
    }  
  });  

}

下拉框:

<s:select  name="product"  headerKey="0" headerValue="Select Product" list="#request.Product" onchange="onChangeProduct()"></s:select>

当我从上面的下拉框中选择值并尝试获取产品的价值时。我在警报消息中没有定义。请帮助我。

4

3 回答 3

0

是的,它会给出 undefined ,因为您没有在标签中提供 id 。将id="product"放入您的标签中,它将显示价值。Jquery 将使用 id 而不是名称来查找标签。

于 2013-03-25T07:57:09.793 回答
0

我得到了上述相同的解决方案,特此我在下面分享代码,

详细信息.jsp

<script type="text/javascript">
    function onChangeProduct() {/* 
        var name = $('#product').val();
        alert(name);
        $.ajax({
            type : "POST",
            url : "/SampleAjax/getProduct.action",
            data : {
                prod : name
            },
            success : function(response) {
                // we have the response  
                $('#productPitch').html(response);
            },
            error : function(e) {
                alert('Error: ' + e);
            }
        }); */

        name=document.getElementById("product").value;
           //document.myForm.selectedGroupId.value=groupIds;
             var  strURL="/SampleAjax/getProduct.action?prod="+name;

                          if (window.XMLHttpRequest) { 

                             var xmlHttp = new XMLHttpRequest();

                           } else if (window.ActiveXObject) { 

                             var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");

                           }
                        xmlHttp.open('POST',strURL , true);
                        xmlHttp.onreadystatechange = function() {
                        if (xmlHttp.readyState == 4) {
                    document.getElementById("productPitch").innerHTML = xmlHttp.responseText;
                      //document.getElementById("load3").style.display = "none";
                    //document.getElementById("load").style.display = "block";


                       }
                }



                xmlHttp.send(null);


    }
</script>
</head>
<body>
    Details
<s:form name="sampleDto">

    <s:select name="product" id="product" headerKey="0"
        headerValue="Select Product" list="#request.Product"
        onchange="onChangeProduct()" theme="simple">
        </s:select>
</s:form>
<div id="productPitch"></div> 

产品.jsp

<select>
        <option value="">Select</option>
        <c:forEach var="listItems" items="${ProductPitch }">

            <option value="<c:out value="${listItems}" />">
                <c:out value="${listItems}" />
            </option>
        </c:forEach>
    </select>

行动:

System.out.println("Hi");
    ArrayList<String> prodPitch = new ArrayList<String>();
    if(null != getProd()){
        System.out.println(""+getProd());
        prodPitch = sampleBo.getProductPitch(getProd());
    }
    System.out.println(prodPitch.size());
        request.put("ProductPitch", prodPitch);

    return "success";
于 2013-03-28T07:08:32.967 回答
0

您可以尝试更改此设置:

var name = $('#product').val();   

对此:

var name = $(this).val();  

并在此处添加:

onchange="onChangeProduct(this.value)"></s:select> 

完整的功能:

function onChangeProduct(val){
   var name = val;   
   alert(name);
   $.ajax({  
      type: "POST",  
      url: "/SampleAjax/getProduct.do",  
      data: {name : name},   //<-----use this to make a dataString
      success: function(response){  
           // we have the response  
          $('#info').html(response);  
      },  
      error: function(e){  
          alert('Error: ' + e);  
      }  
   });  

}
于 2013-03-25T08:05:31.333 回答