将PHP变量传递给jQuery时遇到问题
Having trouble passing PHP variables to jQuery
我对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
}
}
}
希望这有助于澄清问题。
相关文章:
- 将PHP变量传递给jQuery时遇到问题
- 我的jQuery插件参数没有正确启动,遇到了问题
- 将jQuery转换为用户脚本的普通Javascript时遇到问题
- JQuery FullCalendar在从ajax成功调用rerenderEvents时遇到问题
- 使用jquery进行整数比较时遇到问题
- 通过jQuery获取上传的文件名时遇到问题
- 我在向jquery脚本添加延迟时遇到问题
- jQuery-即使条件不是't遇到
- 使用jquery删除和获取html元素时遇到问题
- 从javascript或JQuery执行服务器端cgi代码时遇到问题
- jquery动态添加HTML字段遇到了神秘的问题
- 在 scrollTop 上应用 Jquery 效果时遇到问题
- 编写正确的 jQuery 插件时遇到麻烦
- 在动态生成列表项时遇到 jQuery 的问题
- jQuery 注册 2 个键事件侦听器时遇到问题
- 使用 jquery 读出 json 时遇到问题
- 通过 jquery 侦听器将 html 表单链接到 javascript 函数时遇到问题
- 在 ajax-jquery 函数中传递参数时遇到困难
- JQuery 手风琴在添加内容和对齐时遇到问题
- 将jQuery导入WordPress时遇到麻烦