2014-09-30 79 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