我的代码如下所示:

xyz.html



<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8" />
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <title>Status</title>
  <meta name="viewport" content="width=device-width, initial-scale=1">
</head>

<body>
  <div style="width: 300px;padding: 10px;margin: 0 auto;background: #f2f2f2;">
    <form name="Form">
      <input type="hidden" name="Status" value="<?php echo $_POST['Status'] ?>" />
    </form>

    <script type="text/javascript">
      alert(window.onload);
      window.onload = function() {
        var xhr = new XMLHttpRequest();
        xhr.open('POST', 'http://api.com');
        xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
        xhr.onload = function() {
          if (xhr.status === 200) {
            var apiresponse = JSON.parse(xhr.response);
            console.log(apiresponse);
            if (apiresponse.status == "200") {
              document.getElementById('response').innerHTML = apiresponse.message + '<br/> Press back button to continue in App.';
            } else {
              document.getElementById('response').innerHTML = JSON.stringify(apiresponse);
            }
          } else {
            document.getElementById('response').innerHTML = JSON.stringify(xhr);
          }
        };
        var elements = document.forms['Form'].elements;
        let formBody = [];
        for (var i = 0, element; element = elements[i++];) {
          let encodedKey = encodeURIComponent(element.name);
          let encodedValue = encodeURIComponent(element.value);
          formBody.push(encodedKey + "=" + encodedValue);
        }
        formBody = formBody.join("&");
        document.getElementById('request').innerHTML = formBody;
        xhr.send(formBody);
      }
    </script>
</body>

</html>





当我运行上面的代码时,在alert方法中我得到null值,而在window.onload = function()下给出的下面的函数根本没有被调用。所以有什么需要包括在内才能完成。

最佳答案

当您调用alert(window.onload)时,它为null,因为尚未为window.onload分配功能。您的alert不能证明任何事情。

为了进行健全性检查,请在绑定到alert('hello world');var xhr = new XMLHttpRequest();中的function行上方添加代码window.onload。您可能会发现正在调用您的函数,但其​​行为没有达到您的预期,因此您认为不是在window.onload上调用了函数,而实际上是在。

关于javascript - 在页面上未调用window.onload函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51453634/

10-13 00:55