gpt4 book ai didi

javascript - 为什么当我尝试在 PHP 中运行此 JS 代码时没有任何反应?

转载 作者:行者123 更新时间:2023-12-05 06:10:49 25 4
gpt4 key购买 nike

我有一个名为 test.php 的文件,其中包含整个代码:

<!DOCTYPE html>
<html lang="en">
<head>
<title>Payment Receipt</title>
</head>
<body>

<?php
...
$result = $stmt->get_result();
$row = $result->fetch_assoc();

if($row) {
$obj->txndate = $row['date'];
$obj->txnid = $row['txnid'];
$obj->atomid = $row['atomid'];
$obj->amount = $row['amount'];

$myJSON = json_encode($obj);
echo $myJSON;

//javascript starts inside PHP

echo '<script>', PHP_EOL;
echo 'var msg = <?php echo json_encode($myJSON); ?>;', PHP_EOL;
echo 'var ThunkableWebviewerExtension = {', PHP_EOL;
echo 'postMessage: function (message) {', PHP_EOL;
echo 'if (window.ReactNativeWebView) {', PHP_EOL;
echo 'window.ReactNativeWebView.postMessage(message);', PHP_EOL;
echo '} else {', PHP_EOL;
echo 'window.parent.postMessage(message, '*');', PHP_EOL;
echo '}', PHP_EOL;
echo '}', PHP_EOL;
echo '}', PHP_EOL;
echo 'ThunkableWebviewerExtension.postMessage(msg);', PHP_EOL;
echo '</script>', PHP_EOL;

} else {
echo 'Incorrect ID';
}

$conn->close();

?>

</body>
</html>

当我运行这段代码时,JavaScript 端没有任何反应——在 JavaScript 启动之前一切正常。这是我试图嵌入到 PHP 代码中的 JavaScript 代码:

<!DOCTYPE html>
<html>
<body>

<?php
$myJSON = 'Hi there!';
?>

<script>
var msg = <?php echo json_encode($myJSON); ?>;
var ThunkableWebviewerExtension = {
postMessage: function (message) {
if (window.ReactNativeWebView) {
window.ReactNativeWebView.postMessage(message);
} else {
window.parent.postMessage(message, '*');
}
}
}

ThunkableWebviewerExtension.postMessage(msg);
</script>

</body>
</html>

当我在另一个文件中单独运行上面的代码时,它按预期运行良好,该文件也在 var msg 命令中传递了 PHP 变量。

我想知道我在 PHP 中编写 JavaScript 代码时做错了什么 - 我在某处看到通过回显语句,然后在末尾添加 PHP_EOL 我们可以在 PHP 之间编写 JS/HTML。

这是怎么回事?任何帮助将不胜感激!

最佳答案

这不起作用:

echo '<script>', PHP_EOL;
echo 'var msg = <?php echo json_encode($myJSON); ?>;', PHP_EOL;

因为它将 PHP 代码发送给客户端,客户​​端不会执行它,因为它没有 PHP 解析器。

这样写:

$jsonEncoded = json_encode($myJSON);

echo <<<JS001
<script>
var msg = {$jsonEncoded};
var ThunkableWebviewerExtension = {
postMessage: function (message) {
if (window.ReactNativeWebView) {
window.ReactNativeWebView.postMessage(message);
} else {
window.parent.postMessage(message, '*');'
}
}
};
ThunkableWebviewerExtension.postMessage(msg);
</script>
JS001;
// The line above must end in ";" (not even spaces after) and the J must start
// on the very first columns.

同一文件中的其他部分将称为 JS002,依此类推。在每个“here-document”部分中,如果您想嵌入一个 php 变量,请将其写成 {$variable},如果您有 $ 符号,则将其转义带有反斜杠的 \$

关于javascript - 为什么当我尝试在 PHP 中运行此 JS 代码时没有任何反应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64266597/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com