在PHP中检索PHP中的JavaScript变量

时间:2013-08-07 15:06:47

标签: php javascript database

基本上我所拥有的是,有一个索引文件,它链接到一个JS文件,然后拉入一个PHP文件。

所以我在PHP文件中(以及其他代码):

echo " <script type='text/javascript'>var paging = [ ";
echo "{";
echo "numrows:'" . number_format($numrows) . "',";
echo "pagenum:'" . number_format($pagenum) . "',";
echo "maxpage:'" . number_format($maxpage) . "',";
echo "record_min:'" . number_format($record_min) . "',";
echo "record_max:'" . number_format($record_max) . "'";
echo "}];</script>";

然后,在JS文件中我使用ajax:

req.open("GET", "server.php", true);

并且在readystatechange中我需要检索从php文件中看到的分页变量,因为它包含来自数据库的数据。

在JS文件中,我尝试使用变量而不是echo

var m=<?PHP echo $paging; ?>

但这也不起作用。

有关如何使其发挥作用的任何建议或想法?

3 个答案:

答案 0 :(得分:3)

我使用JSON而不是JS。您应该能够将PHP数组传递给json_encode函数。请参阅:http://php.net/manual/en/function.json-encode.php

此外,在PHP方面,您可能希望修改响应标头以指示响应消息正文是JSON:

header( 'Content-Type: application/json' );

然后,使用jQuery从服务器获取JSON:http://api.jquery.com/jQuery.getJSON/

答案 1 :(得分:0)

如果您没有直接使用JSON(缩小为两个变量),另一种可能的解决方案

echo '<div id = "numrows">'. number_format($numrows) . '</div>';
echo '<div id = "pagenum">'. number_format($pagenum) . '</div>';

在php文件中

req.onreadystatechange = function(){
    if (req.readyState == 4 && req.status == 200){
        document.getElementById('return').innerHTML = req.responseText;
    }
}
req.open("GET", "server.php", true);
req.send();
n["numrows"] = document.getElementById("numrows").innerHTML;
e = document.getElementByID("numrows");
e.parentNode.removeChild(e);
n["pagenum"] = document.getElementById("pagenum").innerHTML;
e = document.getElementByID("pagenum");
e.parentNode.removeChild(e);

在javascript中

<div id = "return" style="display: none;"></div>

在html中

不是最优雅的解决方案,但如果您无法获得其他任何工作,则可以相当直接地使用。

答案 2 :(得分:-2)

好吧因为jQuery让这很容易,这是我的例子:

$paging = array(
                "numrows" => number_format($numrows),
                "pagenum" => number_format($pagenum),
                "maxpage" => number_format($maxpage),
                "record_min" => number_format($record_min),
                "record_max" => number_format($record_max)
               );

$output = json_encode($paging);

header( 'Content-Type: application/json' );

echo $output;

然后在你的javascript页面中使用jquery执行此操作:

function myCallBackFunction(data){
    alert(data.numrows);
}
$.getJSON('server.php',myCallBackFunction(data));

希望这有帮助。

编辑使用数组和json_encode