我试图将country_code var转到函数之外以便稍后在php.ini中使用。这里它的工作是在 div 中显示值。我遇到的问题是使 var 在函数之外可用,因此我可以将其转换为 php var,以便稍后在按下提交按钮后在 php 脚本中使用
<html>
<head>
<script type="text/javascript">
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
var country_code = this.responseText.replace(/(\r\n|\n|\r)/gm,"").split('loc=');
document.getElementById("countrycode-container").innerHTML = country_code;
}
};
//OPEN HTTP Request
xhttp.open("GET", "https://www.cloudflare.com/cdn-cgi/trace", true);
xhttp.send();
</script>
</head>
<body>
<br><br><br>
<div id="countrycode-container"></div>
<br><br><br>
</body>
</html>
但是我想通过从 javascript 的值创建一个 php var 来删除要在这样的 php 脚本中使用的 div
var xhttp = new XMLHttpRequest();
//start of function
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
let country_code = this.responseText.replace(/(\r\n|\n|\r)/gm,"").split('loc=');
country_code = country_code[1].split('tls=');
country_code = country_code[0];
document.getElementById("countrycode-container").innerHTML = country_code;
console.log(country_code);//will work here
}
};
//end of function
//OPEN HTTP Request
xhttp.open("GET", "https://www.cloudflare.com/cdn-cgi/trace", true);
xhttp.send();
console.log(country_code);//need it to work here so i can take the value and turn it into php var
// somehow convert from javascript var to php var
//javascript var country_code
//php var $country
$country=country_code;
if (isset($_POST['submit'])){
code to check country code and do somin if match US,CA
else{
if empty or not US or CA do this
}
}
您可以通过在表单中添加隐藏输入来实现您想要的目的:
<form id="myForm" method="post" action="path/to/script.php">
<input type="hidden" name="country_code" id="country_code" value=""/>
<!-- ... -->
<input type="submit" name="submit" id="submitButtonElement" disabled>Submit</button>
</form>
然后稍微改变一下你的 JavaScript:
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
var country_code = this.responseText.replace(/(\r\n|\n|\r)/gm,"").split('loc=');
document.getElementById("countrycode-container").innerHTML = country_code;
// EDIT: change the hidden input value
document.getElementById("country_code").value = country_code;
// Enable the form submission...
document.getElementById("submitButtonElement").disabled = false;
}
};
//OPEN HTTP Request
xhttp.open("GET", "https://www.cloudflare.com/cdn-cgi/trace", true);
xhttp.send();
然后稍微更改一下你的 PHP 脚本:
if ( isset($_POST['submit']) )
{
$country = $_POST['country_code'];
// ...
switch ( $country )
{
case 'US':
case 'CA':
{
// If US or CA...
break;
}
// Add more country options here...
/*
case 'BR':
{
// If BR...
break;
}
*/
default:
{
// If none of the above...
break;
}
}
// ...
}
页面将从跟踪器请求国家/地区,然后将值存储在表单中,通过 POST 方法发送,以便在 PHP 中可用。您应该禁用提交按钮,直到设置国家/地区变量。
这应该很管用。但请注意,只有接收 PHP 脚本才能访问
$_POST['country_code']
。生成表单的 PHP 脚本将无法访问该 $country
变量。但是,如果表单发送一次,您可以将值存储在会话变量中并在其他 PHP 脚本中恢复它。在后一种情况下,如果没有,您应该在会话中初始化国家/地区变量的默认值。