将PHP变量传递给jQuery时遇到问题

Having trouble passing PHP variables to jQuery

本文关键字:jQuery 遇到 问题 PHP 变量      更新时间:2023-09-26

我对jQuery完全陌生,并试图将一些PHP变量传递给jQuery。我正在使用CORS将JavaScript和PHP文件从我的Web服务器获取到我的博客。

在我的博客上,我希望jQuery获取一个PHP文件并回显重定向头变量。然后我需要JavaScript来获取这些变量,并使用它们进行客户端重定向。但我不知道该怎么做,我试了一整天都没有成功。

我的服务器上的PHP文件如下:

<?php
require_once('geoplugin.class.php');
$geoplugin = new geoPlugin();
$geoplugin->locate();
// create a variable for the country code
$var_country_code = $geoplugin->countryCode;
// redirect based on country code:
if ($var_country_code == "US") {
echo ('Location: http://www.adomain.com');
}
else if ($var_country_code == "CA") {
echo ('Location: http://www.adomain.com');
}
else if ($var_country_code == "UK") {
echo ('Location: http://www.adomain.com');
}
else if ($var_country_code == "AU") {
echo ('Location: hhttp://www.adomain.com');
}
else if ($var_country_code == "NZ") {
echo ('Location: http://www.adomain.com/');
}
else if ($var_country_code == "ZA") {
echo ('Location: http://www.adomain.com');
}
else {
echo ('Location: http://www.adomain.com');
}
?>

我的jQuery请求如下:

function loadDoc() {
var ajax = new XMLHttpRequest();
ajax.onreadystatechange = function() {
    if (ajax.readyState == 4 && ajax.status == 200) {
      "US" == x && US436(),
      "CA" == x && CA(),
      "UK" == x && UK(),
      "AU" == x && AU(),
      "NZ" == x && NZ(),
      "ZA" == x && ZA()
    }
};
ajax.open("GET", "//mydomain.com/scripts/redirect.php", true);
ajax.send();
}
loadDoc()

好的,这是我认为应该工作的代码。jQuery脚本正在向我的服务器请求获取重定向.php脚本。然后我得到变量并将它们转换为函数。(对吗???)

我有另一个JavaScript文件,它正在创建使客户端重定向的函数,看起来像这样:

function US() {
window.location.replace("http://adomain.com");
}

好吧,就这样。希望我没有忘记什么。但这就是我现在掌握的所有代码。就像我说的,我真的很难理解这个CORS,因为我以前从未用jQuery编码过。

如果有人能告诉我问题出在哪里,我将不胜感激!提前谢谢。

您使用的不是jQuery,而是AJAX。它们在原则上是不同的。一种是JavaScript库,另一种是从服务器发送和检索数据的方法。

代码的问题是,您试图在服务器上设置头变量,并将它们发送回客户端,希望它能重定向,但不会。以下是我们需要做的。

将国家代码从服务器返回到浏览器,如下所示:

<?php
require_once('geoplugin.class.php');
$geoplugin = new geoPlugin();
$geoplugin->locate();
// create a variable for the country code
return $geoplugin->countryCode;

现在,在您的javascript onreadystatechange回调中,我们可以接收这个值并进行比较:

ajax.onreadystatechange = function() {
   if (ajax.readyState == 4 && ajax.status == 200) {
       var country_code = ajax.responseText;
       switch(country_code) {
           case 'US' :
               US();
               break;
           case 'UK' :
               UK();
               break;
           //so on and so forth
       }
   }
}

希望这有助于澄清问题。