2014-10-13 5 views
-1
<div class="btn02 lang">EN</div> 
<div class="btn02 lang">YU</div> 

JSвключают в другой файл, используя Ajax

$(".lang").click(function() { 
    var lang = $(this).html(); 
    alert (lang); 
    $.ajax({ 
     type: "POST", 
     dataType: "json", 
     url: "params.php", 
     data: {lang:lang} 
    }); 
    window.location.href = window.location.href; 
}); 

params.php

if (isset($_POST["lang"]) && $_POST["lang"] == "EN") { 
    $lang = "EN"; 
} 
elseif (isset($_POST["lang"]) && $_POST["lang"] == "YU"){ 
    $lang = "YU"; 
} 
else { 
    $lang = "EN"; 
} 

index.php

include "params.php"; 
    if ($lang == "EN") { 
    include "inc/modals.php"; 
    } 
    else { 
    include "inc/modals_yu.php"; 
    } 

Так что, когда я нажимаю на кнопку .lang, содержащей YU I ожидают перезагрузки (он работает) и включают modals_yu.php вместо modals.php. Это не работает. modals.php всегда включен.

+1

На странице обновить значения '$ _POST' будут потеряны. Вы можете использовать переменную '$ _SESSION', чтобы она все еще была доступна – Sean

ответ

1

Это не работает, потому что вы делаете запрос AJAX, а затем перезагружаете страницу. Это два разных запроса. Данные POST отправляются только с первого.

Есть целый ряд других вариантов:

  • Использование querystring/GET parameters при установке window.location.href (например index.php?lang=EN)
  • Используйте скрытый пост форму на странице и .submit(), что с помощью JQuery
  • Набор session variables в PHP, когда POST сделан