Передача PHP-переменных обратно в JavaScript-переменные на исходной странице как Ajax - PullRequest
1 голос
/ 16 августа 2011

У меня есть Ajax, который передает переменную javascript в getfirstvals.php, который затем выполняет свою работу с БД и выводит таблицу значений в зависимости от введенной мной переменной javascript.Теперь я хочу вернуть эти PHP-переменные, которые отображаются, на исходную страницу, с которой отправляется javascript, чтобы преобразовать их в переменные javascript для выполнения вычислений.Я не уверен, как это сделать.

Ниже описано, как это работает.

Ползунок "диапазона" для выбора значений:

echo "<input id='slider' type='range'
min=\"$vartime[0]\" max=\"$timemax\" value=\"$vartime[0]\" step='any' />
<span id='range'> </span>"

......

    selectslider.onchange=function changecolour(){ 
    showValue(selectslider.value)

.....

<script type="text/javascript">
function showValue(str) {
if (str == "") {
    document.getElementById("datatable").innerHTML = "";
    return;
}
if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp = new XMLHttpRequest();
} else { // code for IE6, IE5
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function () {
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
        document.getElementById("datatable").innerHTML = xmlhttp.responseText;
    }
}
if (floorchoice!=0 && floorchoice!=1){
    if (floorchoice==2)
    {
    xmlhttp.open("GET", "getfirstvals.php?q=" + str, true);
    xmlhttp.send();

......

Это посылает "q" в getfirstvals.php, которыйнаходит значения, соответствующие q в th DB, и выводит все значения в той же строке, что и она.Таким образом, при изменении q изменяемые значения изменяются.Как я упоминал выше, я хотел бы, чтобы эти значения не только отображались, но и передавались обратно в переменные javascript на исходной странице, которые затем могут быть использованы для расчетов.Вот что я имею в виду под отображаемыми значениями:

        echo "<td>" . $FFlrOpenPlanTemp . "&#8451</td>";
    echo "<td>" . $FFlrPCRoomTemp . "&#8451</td>";
    echo "<td>" . $FFlrStudyRm6Temp . "&#8451</td>";
    echo "<td>" . $FFlrStudyRm8Temp . "&#8451</td>";    

Ответы [ 2 ]

2 голосов
/ 16 августа 2011

Взгляните на JSON .PHP имеет функцию: json_encode , которая будет принимать объект данных PHP (т.е. массив, но не должен быть массивом) и кодировать его в представлении объекта javascript.

В вашем JSзатем вы можете оценить (совет: не используйте eval, в современных браузерах есть парсеры json), чтобы получить данные JSON в объект Javascript.

Пример

Если яиметь следующий массив в PHP:

$array = array( "test1" => 1, "test2" => 2, 3, array( 4, 5, 6 ));

И я json_encode этот массив, я получаю следующую строку :

{"test1":1,"test2":2,"0":3,"1":[4,5,6]}

Это то, что вы возвращаете обратно в JS (иначе, эхо).Вы можете проанализировать это с помощью встроенной функции синтаксического анализа JSON.parse в Javascript:

var obj = JSON.parse(phpReturnStr);

Voila .У вас есть объект в JS, переданный из PHP.

1 голос
/ 16 августа 2011

Во-первых, вы можете использовать библиотеку Javascript, чтобы сделать ее более простой и кросс-браузерной.Затем я бы предложил вам передать переменные из PHP в JS с json_encode().Просто найдите минутку, чтобы увидеть, как работает jQuery.getJSON , и это будет детская игра.

...