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

标签 javascript jquery ajax

这是我的 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 对象以在 select 中创建选项。我怎样才能这样做?

最佳答案

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

关于javascript - 从表单到 Ajax 的动态对象访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29073433/

相关文章:

javascript - AJAX 不在 IE7/IE8 中传递 POST 变量

php - Jquery ui sortable 不创建数组

javascript - 使用 Node js 将动态字段值插入 mysql DB 时,发送后无法设置 header ?

javascript - jquery窗口调整大小在requirejs中不起作用

jquery - 使用 ajax 导入的列的总和

javascript - 自动刷新 Div 内容而不刷新页面(不使用外部脚本)

javascript - PHP 中陷入未定义索引

javascript - js中将数组解析为无序列表

javascript - 从一个组件调用函数到另一个组件Angularjs 2

javascript - ExtJS 多选组合框