我有一个生成一些HTML并执行一些数据库查询的php文件。 并且有一些switch case语句。在一个特定情况下,我需要向用户发送一些对话框。如果用户按OK,我需要进行一些数据库查询,如果用户按下取消,我不需要。所以我决定回显一个包含确认声明的JavaScript代码片段。 那么如何从JavaScript将确认消息的结果发送回php,并决定是否进行数据库查询。
<?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 :(得分:2)
您输入的文件名没有引号。
Javascript然后不知道它是包含文件名的字符串,它认为它是一个名为filename
的对象实例,其属性为php
。
ajax.open("POST", "filename.php" ,true);
不要以这种方式混合PHP和JS,......它们是完全不同的语言,服务器端,客户端,。
以一种方式构建您的Javascript,使其无需PHP。
然后让PHP使用以下命令注入一些配置:
<script>
var config = <?php json_encode($phpToJs); ?>;
</script>
答案 1 :(得分:0)
尝试在调用ajax.open();
示例:filename.php?userChoice=false
答案 2 :(得分:0)
您在switch语句
中缺少break;
和default