2014-09-30 41 views
-1

我有一个PHP文件,生成一些HTML和做一些数据库查询。 并且有一些switch case语句。在一个特定的情况下,我需要发送给用户一些对话。如果用户按OK,我需要对一些数据库查询,如果用户按取消,我不需要。所以我决定回应一个包含确认语句的JavaScript代码片段。 那么我怎样才能从JavaScript将确认消息的结果发回到php,并决定是否创建一个数据库查询。PHP到JavaScript和回

<?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']总是空的。 有人知道为什么吗?

+0

哪里包含'name =“userChoice”'的HTML? – Mooseman 2014-09-30 12:22:12

+0

我需要一个吗?我只想将ajax.send()的值传递给$ _POST变量。 – cofirazak 2014-09-30 12:25:02

回答

2

你把文件名没有引号。

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

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

不要混合使用PHP和JS这样,......它们是完全不同的语言,服务器端,客户方,.

建立你的Javascript的一种方式,所以它没有PHP的作品。

那么,让使用PHP注入一些配置:

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

尝试引用文件名 - 它没有帮助,但thx。 – cofirazak 2014-09-30 12:34:14

+0

@cofirazak您能否通过提供网络控制台的屏幕截图来确认/验证它是否发送任何内容? – DanFromGermany 2014-09-30 12:45:41

+0

hm。在控制台中,我看到了变量,但没有进一步在php文件中的$ _REQUEST变量中。为什么这样? – cofirazak 2014-09-30 13:38:10

0

尝试通过在URL中的参数调用时ajax.open();

例子:filename.php?userChoice=false

+0

没有工作,但thx – cofirazak 2014-09-30 12:33:34

0

你在开关失踪break;default陈述

+0

是的,但它只是在这里,在生产文件我不会误他们 – cofirazak 2014-09-30 12:36:38

+0

好的感谢您的意见 – Dachi 2014-10-03 08:08:21