将PHP变量作为Ajax传递回原始页面上的JavaScript变量

时间:2011-08-16 19:40:27

标签: php javascript html ajax onchange

我有一些Ajax将javascript变量传递给getfirstvals.php,然后使用DB执行其操作,并根据我输入的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();

...

这会向getfirstvals.php发送“q”,它会在数据库中找到与q匹配的值,并回显与它在同一行中的所有值。这样,当q改变时,回声值改变。正如我上面提到的,我希望这些值不仅要被回显,而且要传递回原始页面上的javascript变量,然后可以用于计算。以下是我所说的回声值的意思:

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

2 个答案:

答案 0 :(得分:2)

看看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(又名,回声)的内容。您可以通过Javascript中的本机解析函数JSON.parse来解析它:

var obj = JSON.parse(phpReturnStr);

。您在PHP中传入了一个JS对象。

答案 1 :(得分:1)

首先,您可以使用Javascript库使其更简单和跨浏览器。然后,我建议你使用json_encode()将变量从PHP传递给JS。只需花一点时间看看jQuery.getJSON如何运作,这将是一个孩子的游戏。