在PHP中创建JavaScript变量,在JavaScript中检索


Creating JavaScript variable within PHP retrieving in JavaScript

基本上我所拥有的是,有一个索引文件,它链接到一个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文件中,我尝试使用一个变量而不是回声

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

但这也不起作用。

有什么建议或想法可以让它发挥作用吗?

我会使用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/

另一个可能的解决方案,如果您不能直接使用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 中

这不是最优雅的解决方案,但如果你不能让其他任何东西发挥作用,那么遵循起来相当简单。

好吧,因为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