获取PHP变量到javascript

时间:2015-11-14 16:19:05

标签: javascript php

我似乎找不到这个问题的答案。我需要抓取一个PHP变量并将其插入到javascript中。

以下是我在PHP页面正文中的示例:

<script type="text/javascript">
$(document).ready(function(){
    $('#button').click(function() { 
        var info = "<?php Print($info); ?>";
        $.post($("#frm1").attr("action"), $("#frm1").serialize(), function () {
        alert(info);
        });
    });   
});
</script>

<?php
    $info="some info";
?>
<form  id="frm1" method="post" action="somepage.php">
<input name="Text1" type="text" />
<input id="button" type="submit" value="submit" />
</form>

所以问题是警报弹出但不回显$ info字符串。显然我错过了获取PHP变量的正确方法。请帮忙。

10 个答案:

答案 0 :(得分:2)

如果php变量在内部HTML中可见,您可以执行类似这样的操作来获取变量:

HTML:

<span class="variable-content"><?php echo $variable; ?></span>

jQuery的:

var php_variable = $(".variable-content").text();
alert(php_variable);

答案 1 :(得分:1)

变化:

alert(info);

为:

alert('<?php echo "some info"; ?>');

答案 2 :(得分:1)

示例代码的主要问题

所有PHP都在JS之前执行。 PHP执行,然后将您的HTML和JS输出到浏览器,在那里呈现/执行/等等。

因此,Print $info $info正在执行<?php // declare and define the data $info = "foo"; ?> <script> // prepare an IIFE which takes the data as a param (function (info) { // inside this function body you can use the data as you // please without muddling your JS by mixing in PHP alert(info); }( // in the invoking parens, output encoded data <?= json_encode($info) ?> )); <script> 的声明和定义之前。你需要定义它,然后输出它。

您应该考虑的其他问题

一旦解决了这个问题,你最终会遇到只是将数据喷入JS中间的问题。它不易维护,毫无准备的数据最终会破坏您的JS语法。当我必须做这样的事情时,我通常会尽可能地将两者分开:

import urllib.request
with urllib.request.urlopen('https://www.python.org/') as response:
    html = response.read()

此方法的另一个好处是,您可以将任何PHP数据结构传递给JS,而无需以任何方式更改方法。 (与使用输入或元素文本相反,您需要解析JSON并跟踪哪些元素包含哪些值)

答案 3 :(得分:1)

在我看来,就像你在使用它之后声明变量一样。所以$ info中没有任何内容。

尝试:

<?php
        $info="some info";
    ?>
        <script type="text/javascript">
    $(document).ready(function(){
        $('#button').click(function() { 
            var info = "<?php echo $info; ?>";
            $.post($("#frm1").attr("action"), $("#frm1").serialize(), function () {
            alert(info);
            });
        });   
    });
    </script>


    <form  id="frm1" method="post" action="somepage.php">
    <input name="Text1" type="text" />
    <input id="button" type="submit" value="submit" />
    </form>

答案 4 :(得分:1)

试试这个

<!DOCTYPE html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
</head>

<body>

<span id="info" hidden><?php
$info="some info";
echo $info;
?></span>


<form  id="frm1" method="post">
<input name="Text1" type="text" />
<input id="button" type="submit" value="submit" />
</form>

<script type="text/javascript">
$(document).ready(function(){
$('#button').click(function() { 
    var info = $("#info").text();

    $.post($("#frm1").attr("action"), $("#frm1").serialize(), function () {
    alert(info);
    });

});   
});
</script>


</body>
</html>

答案 5 :(得分:1)

如果您不想使用JQuery,您可以将php值放入隐藏的输入中,并使用JavaScript documentGetElementById...从隐藏变量中获取它,这样您就可以将脚本保持在头部,这似乎是满足您的要求。根据@Miko隐藏的跨度或:

    <input type="hidden" id="php_info_data" name="php_info_data" value="<?php echo $info; ?>" />

并在您加载正文后执行的标题脚本中执行:

    var info = documentGetElementById('php_info_data').value;

答案 6 :(得分:0)

<?php
    $info="some info";
?>
<script type="text/javascript">
$(document).ready(function(){
    $('#button').click(function() { 
        var info = "<?php echo($info); ?>";
        alert(info);
        $.post($("#frm1").attr("action"), $("#frm1").serialize(), function () {
        alert(info);
        });
    });   
});
</script>

<form  id="frm1" method="post" action="somepage.php">
<input name="Text1" type="text" />
<input id="button" type="submit" value="submit" />
</form>

答案 7 :(得分:0)

试试这个

var info = "<?php echo $info; ?>";

答案 8 :(得分:0)

你可以将PHP变量转换为JSON然后发送它Javascript,becoz JSON 受所有语言支持 实施例

var a=<?php echo json_encode($info); ?>

alert(a);

或只是

var a=<?php echo $info; ?>

alert(a);

<?php $info=10; ?>
    <script>

        var a=<?php echo $info; ?>;
        var a1=<?php echo json_encode($info+10); ?>;
        alert(a);
        alert(a1);
    </script>

答案 9 :(得分:0)

试试这个

<?php
    $info="some info";
?>
<script type="text/javascript">
$(document).ready(function(){
    $('#button').click(function() { 

        $.post($("#frm1").attr("action"), $("#frm1").serialize(), function () {
        alert(<?php echo $info;?>);
        });
    });   
});
</script>

<form  id="frm1" method="post" action="somepage.php">
<input name="Text1" type="text" />
<input id="button" type="submit" value="submit" />
</form>