我似乎找不到这个问题的答案。我需要抓取一个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变量的正确方法。请帮忙。
答案 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>