【问题标题】:php to javascript and backphp 到 javascript 并返回
【发布时间】:2014-09-30 12:18:43
【问题描述】:

我有一个生成一些 html 并执行一些数据库查询的 php 文件。 还有一些 switch case 语句。在一种特殊情况下,我需要向用户发送一些对话框。如果用户按 OK,我需要进行一些数据库查询,如果用户按取消,我不需要。所以我决定回显一个包含确认语句的 JavaScript 代码 sn-p。 那么如何从 JavaScript 将确认消息的结果发送回 php,并决定是否进行 db 查询。

<?php 
// some code
switch $_REQUEST['action']
case 'save':
echo '<script type="text/javascript">',
     'if (!confirm("text + variables") ) { ajax=new XMLHttpRequest();
                                           ajax.open("POST",filename.php,true);
                                           ajax.setRequestHeader("Content-type","application/x-www-form-urlencoded");
                                           ajax.send("userChoice=false");
                                         }',
     '</script>';
if (!empty($_POST['userChoice'])) {
    echo 'got the variable from javascript!'
    // do some code
}

但不幸的是,$_POST['userChoice'] 总是空的。 有人知道为什么吗?

【问题讨论】:

  • 包含name="userChoice"的HTML在哪里?
  • 我需要一个吗?我只想将 ajax.send() 的值传递给 $_POST 变量。

标签: javascript php ajax post


【解决方案1】:

您输入的文件名不带引号。

Javascript 不知道它是一个包含文件名的字符串,它认为它是一个名为 filename 的对象实例,其属性为 php

ajax.open("POST", "filename.php" ,true);

不要以这种方式混合 PHP 和 JS,...它们是完全不同的语言,服务器端,客户端,。

以一种无需 PHP 的方式构建您的 Javascript。

然后让 PHP 使用以下方法注入一些配置:

<script>
var config = <?php json_encode($phpToJs); ?>;
</script>

【讨论】:

  • @cofirazak 您能否通过提供网络控制台的屏幕截图来确认/验证它没有发送任何内容?
  • 嗯。在控制台中,我看到了变量,但在 php 文件中的 $_REQUEST 变量中没有看到。为什么会这样?
  • @cofirazak 你应该怎么看东西? Ajax 请求不会生成可见输出,除非您通过 HTML(不是 PHP)显式显示它。
【解决方案2】:

调用ajax.open();时尽量在url中传递参数

示例:filename.php?userChoice=false

【讨论】:

    【解决方案3】:

    您在 switch 语句中缺少 break;default

    【讨论】:

    • 是的,但它只是在这里,在生产文件中我不会错过它们
    猜你喜欢
    • 2017-05-07
    • 1970-01-01
    • 2016-12-29
    • 2015-02-27
    • 2017-04-20
    • 2012-04-02
    • 2010-10-15
    • 1970-01-01
    • 2013-03-29
    相关资源
    最近更新 更多