在通过 post 请求调用的文件中执行 javascript

Execute javascript in a file called through post request

我有一个 php 文件(index.php),其中包含一个按钮,如果单击该按钮,它将触发 javascript 函数将 post 请求 php 文件(login.php)。现在 login.php 如果条件为真,我将被重定向到 url,使用 javascript。对于这个例子,我不会问如何重定向,而只是在 login.php;

上执行一个简单的 alert()

我找到了一个答案,说我应该这样做:

<?php // some php code
   // php condition is true {
   echo "<script type="text/javascript">
            alert('Alert worked.');
         </script>";
   // }
   // more php code 
?>

它执行 echo 但从不执行脚本。
如何在文件中执行 javascript(通过 post 请求调用)。

退出PHP,让JS实际运行。使用回显,您只是将其写入正在生成的页面。

<?php // some php code
   // php condition is true
 {
?>
<script type="text/javascript">
        alert('Alert worked.');
</script>";
<?php
}
// more php code 
?>

要使用 AJAX 使其正常工作,您应该将此回复添加到 DOM 页面。例如:

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<script type="text/javascript">
    $.get('/test.php', function (script) { 
        $('body').append(script);
    })
</script>

正如 cale_bAndrew Koper 提到的,您需要重新考虑您的方法。如果 login.php 仅用于路由用户而不显示任何输出,那么您将永远不会看到 Javascript 警报。

您可以通过 AJAX 将 post 设为 login.php 和 return 一个值:

AJAX POST: https://api.jquery.com/jquery.post/

$.ajax({
    type: "POST",
    url: 'login.php',
    data: data_to_post,
    success: function(e) {
        // e will be whatever you've returned from your login.php script

        // Perform conditional check on e 
        (if (e === 'success') {
            // Alert message here
            alert("You've been logged in!");

            // Redirect user here as needed
            window.location = 'www.your_url.com';
        }
    }
    dataType: dataType
});

我应该提到这个解决方案取决于 JQuery 是否包含在内:

<head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
</head>

JQuery - 入门:http://www.w3schools.com/jquery/jquery_get_started.asp

从根本上说,您尝试做的事情的结构——基于您所写的内容——听起来不对。听起来您想:

  1. 将点击事件处理程序附加到索引页上的按钮
  2. 单击时,向服务器发送 AJAX 请求。 (如果你有一个表单,其中一些变量需要在服务器上 submitted/stored,使用 POST。如果你需要从服务器获取 true/false 变量,请使用 GET。它不在服务器上有一个没有提供的 true/false 变量的页面是没有意义的。没有提供的页面有一个 true/false 变量的页面是没有意义的向上一微秒只是为了让变量服务于另一个页面。)
  3. "window.location = 'http://whatever.com'" 将通过 JavaScript 向用户显示一个新网页。或者按钮可以向服务器上的 PHP 文件发送 HTTP 请求,并且 PHP 可以像正常情况一样基于 true/false 测试发回网页。