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

时间:2016-05-19 17:14:11

标签: javascript php ajax

我是jQuery的新手,并尝试将一些PHP变量传递给Jquery。我正在使用CORS从我的网络服务器获取JavaScript和PHP文件到我的博客。

在我的博客上,我希望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()

Oke所以这里是我认为应该工作的代码。 jQuery脚本向我的服务器发出请求以获取redirect.php脚本。然后我获取变量并将它们转换为函数。 (右???)

我有另一个JavaScript文件创建了使客户端重定向的功能,如下所示:

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

好的,就是这样。我希望我没有在这里忘记一些事情。但这就是我现在拥有的所有代码。就像我说的那样,我很努力地围绕这个CORS,因为我之前从未用jQuery编码。

如果有人能够告诉我这是什么问题会非常感激!提前谢谢。

1 个答案:

答案 0 :(得分:1)

你没有使用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

       }
   }
}

希望这有助于清理事情。