首页 > 解决方案 > HTML Select Dropdown ID 未传递给 Javascript 函数 getelementbyid 值为 null

问题描述

新手在这里,试图向队友展示客户端休息操作的价值,因为他们依赖脚本和python。不确定是我使用数字作为 value 属性还是我引用 getelementbyid 错误。老实说,这些东西可能都不是:)

我试图在 MakeUrl 的 getelementbyid 中显式引用分配给 IP 地址的 id,但它仍然失败。我还以为它是空的,因为它使用的是默认值,但我将它注释掉了,我仍然得到错误。

错误:

未捕获的类型错误:无法读取 null 的属性“值”(MakUrl 函数)

function makeUrl() {
  var ip = document.getElementById("apigatewayip").value;
  return "https://" + ip + "/api/v0/sessions"
};

function createSession(_url) {
  return $.ajax({
    "url": _url,
    "method": "POST",
    "timeout": 0,
    "headers": {
      "Content-Type": "application/json"
    },
    "data": JSON.stringify({
      "gatewayVersion": "1.00.1.15"
    }),
  });
}

createSession(makeUrl());

createSession(makeUrl()).success(function() {

});
<h1>Making AJAX Rest Calls</h1>
<div class="custom-select" style="width:200px;">
  <select name="selectip" id="apigatewayip" onchange="makeUrl">
    <option value="" disabled selected>API Gateway IP</option>
    <option value="169.254.1.10">169.254.1.10</option>
  </select>
  <button onclick="createSession">Submit</button>
</div>

标签: javascriptjqueryajax

解决方案


您需要设置处理程序来调用您的函数,而不仅仅是分配:

<button onclick="createSession()">Submit</button>

此外,您可以在createSession函数中创建 url:

function createSession() {
  var ip = document.getElementById("apigatewayip").value;
  var _url = "https://" + ip + "/api/v0/sessions"
  console.log(_url) // Use this for ajax call
  /*$.ajax({
    "url": _url,
    "method": "POST",
    "timeout": 0,
    "headers": {
      "Content-Type": "application/json"
    },
    "data": JSON.stringify({
      "gatewayVersion": "1.00.1.15"
    }),
  });*/
}
<h1>Making AJAX Rest Calls</h1>
<div class="custom-select" style="width:200px;">
  <select name="selectip" id="apigatewayip">
    <option value="" disabled selected>API Gateway IP</option>
    <option value="169.254.1.10">169.254.1.10</option>
  </select>
  <button onclick="createSession()">Submit</button>
</div>


推荐阅读