Вызовите функцию PHP в ajax - PullRequest
0 голосов
/ 03 февраля 2011

Моя проблема заключается в следующем: у меня есть настоящий простой файл PHP с именем "writeSettings2.php", который имеет:

<?php 
    $text=$_GET["text"];
     setcookie("MG_FileTree_Opener_SelPath", $text);
?>

А затем у меня есть страница PHP, на которой у меня есть функция JavaScript, которая называется"makeChanges", эта функция вызывается в функции отправки типа ввода и получает выбранное значение в выпадающем списке и вызывает через xmlhttp приведенную выше функцию PHP следующим образом:

<input type="submit" id="choice" value="Escolher" name="Esc" onClick="makeChanges()">

А функция "makeChanges" имеет вид:

function makeChanges(  )
{
    var selObj = document.getElementById('opiniao');    
    var selIndex = selObj.selectedIndex;
    var str = selObj.options[selIndex].text;

    if (window.XMLHttpRequest)

    {// code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp=new XMLHttpRequest();

    }
    else
    {// code for IE6, IE5
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
   xmlhttp.open("GET","writeSettings2.php?text="+str,true);
   xmlhttp.send(null);
   history.go(0);
}

В основном я использую JavaScript на клиенте для вызова функции PHP, чтобы переписать cookie-файл клиента, а затем обновить страницу, чтобы PHP переписал страницу с новой информацией о cookie..

Этот код отлично работает, но только для первого раза 2 раза!Например, мой комбокс содержит пункты 1 и 2. Я загружаю его и являюсь элементом 1. Перейдите к элементу 2. Вернитесь к пункту 1. Снова измените на элемент 2 ---- СБОЙ никогда не изменится, он всегда останется на 1.

Есть предложения?

1 Ответ

1 голос
/ 03 февраля 2011

Ваш браузер кэширует ответ ajax. Вам необходимо добавить случайное значение в запрос ajax или поместить заголовок no-cache на вызываемой странице. Вы можете изменить javascript следующим образом:

var str = selObj.options[selIndex].text+'&random='+(new Date()).getTime();

И / или используйте следующий заголовок php:

header("Cache-control: no-cache");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...