Php 需要在服务器端刷新URL-如何刷新?

Php 需要在服务器端刷新URL-如何刷新?,php,jquery,redirect,Php,Jquery,Redirect,我有一个翻译插件,利用谷歌的免费网站翻译工具。我不使用他们的API,但只提供一些创造性的选项,说明如何在网站上使用该工具 工作原理:用户单击触发事件的标志或下拉列表,然后在翻译后将?lang变量添加到url的末尾。用户可以通过修改地址栏中的?langurl变量直接更改url 这很棘手,尤其是因为现在我正在使用客户端功能来完成这项工作。我正在使用location.href刷新页面,这也会在导航到新页面后将lang变量添加回url 我的问题是,当用户单击指向新页面的链接时,会发生以下情况: 用户单击

我有一个翻译插件,利用谷歌的免费网站翻译工具。我不使用他们的API,但只提供一些创造性的选项,说明如何在网站上使用该工具

工作原理:用户单击触发事件的标志或下拉列表,然后在翻译后将
?lang
变量添加到url的末尾。用户可以通过修改地址栏中的
?lang
url变量直接更改url

这很棘手,尤其是因为现在我正在使用客户端功能来完成这项工作。我正在使用
location.href
刷新页面,这也会在导航到新页面后将
lang
变量添加回url

我的问题是,当用户单击指向新页面的链接时,会发生以下情况:

  • 用户单击新页面链接

  • 页面刷新到新url,但不带
    lang
    变量

  • jQuery
    第二次启动并刷新页面以添加url变量

  • 新页面现在显示给用户,并带有请求的url变量

  • 这是两个刷新!显然效率不高

    我发现最好改为服务器端刷新,使用
    PHP
    。如果有人能给我举个简单的例子,我需要一些关于
    jQuery
    PHP
    如何交互的指导

    下面是我现在为一个单一语言案例编写的
    jQuery
    代码,当用户直接在浏览器中更改url时

    <script type="text/javascript">
             jQuery(document).ready(function($) {
    
               $.cookie("language_name", "Afrikaans");
               $.cookie("flag_url", "<?php echo home_url(); ?>/wp-content/plugins/google-language-translator-premium/images/flags24/Afrikaans.png");
    
               var language_name = $.cookie("language_name");
               var lang = GetURLParameter('lang');
               var googtrans = $.cookie("googtrans");
               var lang_prefix = $('a.af').attr("class").split(" ")[2];
    
               if (lang == null && language_name == 'Afrikaans') {location.href = document.location.href.split("?")[0] + "?lang=" + lang_prefix;} 
    
               function GetURLParameter(sParam) {
                 var sPageURL = window.location.search.substring(1);
                 var sURLVariables = sPageURL.split('&');
                   for (var i = 0; i < sURLVariables.length; i++) {
                     var sParameterName = sURLVariables[i].split('=');
                       if (sParameterName[0] == sParam) {
                         return sParameterName[1];
                       }
                   }
                }
    
               if (googtrans != '/en/af') {
                 doGoogleLanguageTranslator('en|af');
               }               
             });
           </script>
    
    
    jQuery(文档).ready(函数($){
    $.cookie(“语言名称”、“南非荷兰语”);
    $.cookie(“flag_url”,“wp content/plugins/google language translator premium/images/flags24/Afrikaans.png”);
    var language_name=$.cookie(“language_name”);
    var lang=GetURLParameter('lang');
    var googtrans=$.cookie(“googtrans”);
    var lang_prefix=$('a.af').attr(“类”).split(“”[2];
    如果(lang==null&&language\u name=='Afrikaans'){location.href=document.location.href.split(“?”[0]+”?lang=“+lang\u prefix;”
    函数GetURLParameter(sParam){
    var sPageURL=window.location.search.substring(1);
    var sURLVariables=sPageURL.split('&');
    对于(变量i=0;i
    您可以使用JavaScript将
    lang
    参数附加到页面加载的每个链接上。您需要逻辑来忽略外部链接,并根据查询字符串的预先存在添加
    ?lang
    &lang
    。当然,除非在当前URL中已经指定了lang,否则它不会做任何事情

    您可以将现有代码修改为以下内容:

    ...
    if (lang) {
      jQuery("a").each(function () {
        // Logic here
      });
    }
    else if (language_name == 'Afrikaans') {
      location.href = document.location.href.split("?")[0] + "?lang=" + lang_prefix;
    }
    ...
    

    查看如何附加查询字符串参数的示例。

    使用Ajax,这样您将只刷新站点的一部分,而不是整个页面,并且仍然可以维护所需的lang变量want@eddwindpaz我喜欢这个主意……你能告诉我怎么做吗?即使是一般的例子也会把我推向正确的方向。转到jquery文档站点部分,键入$.get或$.post并查看演示。这里有详细的解释…@RobMyrick如果你想使用jquery和ajax,请检查一下
    
    <?php
        if (empty($_GET['lang'])) {
           header('Location: $_SERVER['REQUEST_URI'].'?'.$_SERVER['QUERY_STRING'].'&lang=en');
           die;
        }
    ?>