我需要获取客户端的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/