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

Dynamic Object Access from form to Ajax

本文关键字:动态 对象 访问 Ajax 表单      更新时间:2023-09-26

这是我的 JavaScript 和 Ajax 代码:

实际上,我正在使用它来动态添加调用此函数的任意数量的选择中的选项。

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对象以在选择中创建选项。我该怎么做?

解决方案是使用 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();
}