我有一些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 . "℃</td>";
echo "<td>" . $FFlrPCRoomTemp . "℃</td>";
echo "<td>" . $FFlrStudyRm6Temp . "℃</td>";
echo "<td>" . $FFlrStudyRm8Temp . "℃</td>";
答案 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如何运作,这将是一个孩子的游戏。