【问题标题】:Having trouble passing PHP variables to jQuery无法将 PHP 变量传递给 jQuery
【发布时间】:2016-05-20 01:21:40
【问题描述】:

我对 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()

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

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

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

好的,就是这样。希望我没有忘记这里的东西。但这就是我现在拥有的所有代码。就像我说的那样,由于我以前从未使用 jQuery 编码,因此我非常努力地围绕这个 CORS 进行思考。

如果有人能够告诉我问题是什么,那将非常感激!提前致谢。

【问题讨论】:

  • 当您使用 jQuery 时,您可以使用 api.jquery.com/jquery.ajax 来稍微简化您的代码。我只会返回 URL 并在您的 AJAX 回调中重定向。我不确定你在分配所有这些功能。
  • @DavidJones 好吧,在我的服务器上,我有一个 GeoIP 旋转器。就像我说的那样,我正在根据他们的国家/地区轮换流量。由于我有不止一个博客,我正在尝试使用 CORS 从我的服务器获取 PHP 脚本。然后我尝试从我的 PHP 脚本中获取变量并使用 JavaScript 重定向我的流量客户端。我不确定这是否有意义,我只是希望让它发挥作用。

标签: javascript php ajax


【解决方案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

       }
   }
}

希望这有助于解决问题。

【讨论】:

  • 谢谢它有点工作我现在得到一个不同的错误:加载资源失败:net::ERR_CONNECTION_RESET。无论如何,我觉得我取得了进步,我将谷歌我的下一个问题。保重
  • @Naomi 很高兴我能帮上忙。祝你好运。
猜你喜欢
  • 1970-01-01
  • 2013-02-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多