如何使用PHP代码访问javascript变量


how to access javascript variable with php code

        function al(){
        var selr = jQuery('#grid').jqGrid('getGridParam','selrow');
        if(selr){
            <?
                include_once("../../DB/singleton.php");
                $pDatabase = Database::getInstance();
                $c = $pDatabase->query("select c.city_title as 'City' from teamshuffle.tbl_city c, teamshuffle.tbl_sport_city s where c.tblcity_id = s.tblcity_id and s.tblsport_id = " . );
                while($r = mysql_fetch_array($c)){
                    echo("alert('"" . $r[0] . selr . "'");");
                }
            ?>
        }
    }

这是我的javascript函数。我需要访问

行中的变量"selr"
echo("alert('"" . $r[0] . $d . "'");");

简短的回答:你不能。PHP是服务器端,JavaScript是客户端。

长答:

您可能无法"访问"该变量,但您可以在ajax请求中将该值发送到任何需要它的PHP页面并在那里使用它。作为POST参数或Query参数

在PHP访问JS变量是不可能的。不过,你可以用PHP生成如下所示的javascript,它的功能如下所示:

            while($r = mysql_fetch_array($c)){
                echo 'alert("' . $r[0] . '" + selr);';
            }

注意+ selr是echo的一部分,所以它被发送到浏览器,javascript在客户端执行字符串连接。

如果你不明白我的意思,请在浏览器中查看生成的HTML源代码。

不,你不能这么做。PHP在服务器上执行,Javascript在客户端的浏览器中执行。它们必须通过HTTP请求进行通信。

您必须向服务器发出ajax请求并发送适当的响应。

对不起,还没有测试过,只是一个猜测。尝试使用cookies;

function al(){
    var selr = jQuery('#grid').jqGrid('getGridParam','selrow');
    setCookie("selr", selr, 1);
    if(selr){
        <?
            include_once("../../DB/singleton.php");
            $pDatabase = Database::getInstance();
            $c = $pDatabase->query("select c.city_title as 'City' from teamshuffle.tbl_city c, teamshuffle.tbl_sport_city s where c.tblcity_id = s.tblcity_id and s.tblsport_id = " . );
            while($r = mysql_fetch_array($c)){
                echo("alert('"" . $r[0] . $_COOKIE['selr'] . "'");");
                 }
        ?>
    }
}
function setCookie(c_name,value,exdays){
    var exdate = new Date();
    exdate.setDate(exdate.getDate() + exdays);
    var c_value = escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString());
    document.cookie=c_name + "=" + c_value;
}