我对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
}
}
}
希望这有助于澄清问题。