从表单到Ajax的动态对象访问

时间:2015-03-16 09:32:49

标签: javascript jquery ajax

以下是我使用Ajax代码的JavaScript:

实际上我正在使用它在任意数量的select中动态添加选项。

function loadabc(vm) {
    var xmlhttp;    
    //alert(vm);

    if (window.XMLHttpRequest) {
        // code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp = new XMLHttpRequest();
    }
    else {
        // code for IE6, IE5
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }

    //alert("called");
    xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState == 4) {
            var jsonObj = JSON.parse(xmlhttp.responseText);
            for(i = 0; i < jsonObj.length; i++) {
                var createOption = document.createElement("option");
                //alert("Jeason has Passed Data");
                createOption.value = jsonObj[i].aId;
                createOption.text = jsonObj[i].aName;
                //alert("id" + createOption.value);
                //alert("Name" + createOption.text);
                document.impForm.vm.options.add(createOption);
                //alert("Added");
            }
        }
    }
    xmlhttp.open("get", "${pageContext.request.contextPath}/Admin_Search_con?flag=loaddetail", true);
    xmlhttp.send();
}

我正在使用ondblclick="loadabc(this)"来调用它。我想访问此vm对象以在select中创建选项。我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

解决方案是使用param vm 而不是将其引用为 document.impForm.vm

function loadabc(vm) {
  var xmlhttp;    
  //alert(vm);

  if (window.XMLHttpRequest) {
      // code for IE7+, Firefox, Chrome, Opera, Safari
      xmlhttp = new XMLHttpRequest();
  }
  else {
      // code for IE6, IE5
      xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  }

  //alert("called");
  xmlhttp.onreadystatechange = function() {
      if (xmlhttp.readyState == 4) {
          var jsonObj = JSON.parse(xmlhttp.responseText);
          for(i = 0; i < jsonObj.length; i++) {
              var createOption = document.createElement("option");
              //alert("Jeason has Passed Data");
              createOption.value = jsonObj[i].aId;
              createOption.text = jsonObj[i].aName;
              //alert("id" + createOption.value);
              //alert("Name" + createOption.text);
              vm.options.add(createOption); // <-- Here!
              //alert("Added");
          }
      }
  }
  xmlhttp.open("get",  "${pageContext.request.contextPath}/Admin_Search_con?flag=loaddetail", true);
  xmlhttp.send();
}