【问题标题】:AJAX called PHP can't read URLAJAX 调用 PHP 无法读取 URL
【发布时间】:2011-11-14 21:17:37
【问题描述】:

考虑一个两种语言的网站,其中通过?lang=en 调用英文版页面以下 AJAX 调用似乎适用于打印 RSS 新闻的侧边栏:

$(document).ready(function() {
            $.ajaxSetup ({  
                cache: false  
            });
            $('.msg_head').eq(0).click(function(){
                $('.msg_body').eq(0).load('printSideNews.php');
                $('.loadMessage').eq(2).hide();
            });

printSideNews.php 开头如下:

function checkNewsLanguage(){
        $requiredURL = $_SERVER['REQUEST_URI'];
        $Languag = explode('?lang=',$requiredURL);
        $myLanguage = $Languag[1];
        //echo $myLanguage;
        if($myLanguage == 'en')
            return false;
        else return true;
    }

由于某种原因,检查 URL 的语言检查不起作用。我无法获取新闻侧边栏的英文版。如果我直接转到news.php(no AJAX used but same PHP functions),我使用完全相同的程序,语言切换正在工作。非常感谢任何解决此问题的帮助。

【问题讨论】:

  • 有什么理由不能只检查 $_GET['lang'] 而不是 _SERVER/explode/array 业务?
  • @Marc haha​​,打败我。 @George 是否有任何特殊原因需要检查 $_SERVER["REQUEST_URI"] 而不是 $_GET["lang"]?
  • 你是对的,但它似乎没有帮助
  • lang 什么时候设置?
  • @Interstellar_Coder;单击作为链接的标志图像后

标签: php ajax url


【解决方案1】:

AJAX 调用从不传递 lang 参数,请尝试将 data: { lang: 'en' } 添加到您的 ajaxSetup 调用中。

更新 更正:

$('.msg_body').eq(0).load('printSideNews.php', 'lang=en');

【讨论】:

  • 在这种情况下,尝试像这样调用$('.msg_body').eq(0).load('printSideNews.php', {lang: 'en'});,如果可行,我会更改答案以匹配。
  • 由于某种原因它不起作用;这个想法是,如果我有 news.php 加载 bg 新闻,如果它是 news.php?lang=en 加载英语,它适用于纯 PHP 而没有 AJAX
  • 抱歉,我刚刚阅读了文档,它说将数据作为对象作为参数传递会将其转换为POST,请改用$('.msg_body').eq(0).load('printSideNews.php', 'lang=en');。
  • 没问题,很高兴我能帮上忙。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-21
  • 2022-10-08
相关资源
最近更新 更多