0

可能重复:
将 PHP 字符串传递给 Javascript 变量(并转义换行符)

谁能告诉我将php变量传递给javascript函数以及将javascript变量传递给php脚本的方法。这是我想传递php变量的示例行,但是当我这样做时,该函数没有被执行

echo "<td><a href='#' onclick='disp_confirm($row->university)'>Delete</a></td>";

请帮我。

4

4 回答 4

0

添加大括号并将工作:

echo "<td><a href='#' onclick='disp_confirm({$row->university})'>Delete</a></td>";
于 2012-11-21T10:04:03.473 回答
0

您需要在 onclick 中引用字符串:

echo "<td><a href='#' onclick='disp_confirm(\"{$row->university}\")'>Delete</a></td>";
于 2012-11-21T10:06:31.583 回答
0

要将变量打印到 Javascript 中,您只需添加花括号(这仅在发出双引号字符串时有效,因此:

 echo "<td><a href='#' onclick='disp_confirm({$row->university})'>Delete</a></td>";

将工作和

 echo '<td><a href="#" onclick="disp_confirm({$row->university})">Delete</a></td>';

不会工作。对于{$variables}等也是{$array['of values']}如此。

(在上面的代码中,$row->university必须是一个整数,否则你会得到一个 Javascript 错误。如果是这样,用转义的单引号引用这个值)

更新(感谢Mihai Iorga):您必须考虑变量将如何与 Javascript 代码交互。引用字符串是不够的,因为变量本身可能包含引号。因此,如果您的大学是“Shi'Kahr University”,那么 HTML 将变为

onclick='disp_confirm(\'Shi'Kahr University\')'

并且 Javascript 将立即被破坏。所以你还必须使用addslashes()来确保你的字符串被正确引用。由于您在 string 中写入string,因此需要调用addslashes()两次才能获得

onclick='disp_confirm(\'Shi\\\'Kahr University\')'

要将 Javascript 值传递给服务器端的 PHP 脚本,您可以使用 AJAX(例如 jQuery 库),也可以将值添加到 URL 并重新加载页面:

 alert("Submitting " + value);
 location.href = '?variable=' + value;

该脚本将从头开始再次执行(可能是也可能不是您想要的),然后$_GET['variable']将包含value。您可以使用 区分这两种情况if

<?php
    if (isset($_GET['variable']))
    {
        // This is the second round
    }
    else
    {
        // This is the first time
    }
    // common code goes here
?>

最后,还有一些库允许混合 PHP 和 Javascript。他们基本上像上面那样工作,但他们负责繁重的工作、可变的传球、逃跑和回调。参见例如XAJAX,但还有其他几个。

于 2012-11-21T10:08:10.283 回答
0

您不能将 javascript 变量传递给 PHP,除非您通过提交表单(因为 JS 在客户端,而不是在服务器中)或使用 AJAX 来发送信息。

如果您想将 PHP 变量写入 JS,则必须将变量回显到 HTML/JS 代码中,如下所示:

<td><a href='#' onclick='disp_confirm(<?php echo $row->university?>)'>Delete</a></td>

或者:

function name() {
    var i=<?php echo $data?>;
    ...
}
于 2012-11-21T10:11:19.287 回答