javascript - 为什么使用 JavaScript 时 HTML 中的 php 结果未定义

标签 javascript php html ajax

我需要获取客户端的IP。我可以通过 PHP 变量获取它 “$_SERVER['REMOTE_ADDR']”。我通过 AJAX 请求从服务器端 php 获取此 IP 到 html 页面,但是当我想在 JavaScript 中使用此 IP 值时,它显示该值未定义。 有什么解决办法吗?

PHP 代码:

<?php echo $_SERVER['REMOTE_ADDR'];?>

HTML 代码:

<body onload='ip(); ip2();'>
<kbd id='ip' ></kbd>

JavaScript 代码:

function ip() {
  var xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function () {
    if (this.readyState == 4 && this.status == 200) {
      document.getElementById("ip").innerHTML =
        this.responseText;
    }
  };
  xhttp.open("POST", "ip.php");
  xhttp.send();
}

function ip2() {
  setTimeout(function () {
    var ip = document.getElementById("ip").value;
    alert(ip);
  }, 1000);
}

最佳答案

首先,您应该验证您是否从 AJAX 请求中获得了正确的响应,方法是检查结果是否已写入具有 id 属性“ip”的元素,而不是使用:

var ip = document.getElementById('ip').value;

您应该使用Node.textContent获取文本内容:

var ip = document.getElementById('ip').textContent;

代码示例(无 AJAX 请求):

function ip() {
  document.getElementById('ip').innerHTML = '127.0.0.1';
}

function ip2() {
  setTimeout(function () {
    var ip = document.getElementById('ip').textContent;
    console.log(ip);
  }, 1000);
}
<body onload="ip(); ip2();">
<kbd id="ip" ></kbd>

关于javascript - 为什么使用 JavaScript 时 HTML 中的 php 结果未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43340774/

相关文章:

javascript - 如何水平反转计算器的输入类型="text"?

html - 如何使按钮看起来好像具有透明边框/描边?

php - 如何检索文件名

javascript - 带有 InfoBox 插件的 Google Maps API v3 事件鼠标悬停

php - 将多行表连接到一行

php - 警告 : couldn't fetch mysqli_result in . .. 使用 $_SESSION 的结果集

php - YII - Bootstrap css 覆盖自定义 css 规则

html - 根据屏幕尺寸缩放div中的背景图像

javascript - 未捕获的语法错误 : Unexpected token < (from &lt;! DOCTYPE html>)

javascript - 如何在javascript中检查提交按钮是否被点击