2012-03-19 29 views
2

我有一個連接到MySql數據庫並從特定表讀取最後一個條目的php文件。我試圖做的是顯示(回聲)從表中最後一項使用JavaScript彈出框到外部HTML文件 下面我有PHP文件(這是工作正常)和HTML的代碼,但不幸的是我無法弄清楚如何將PHP變量傳遞給JavaScript函數。將php變量顯示到JavaScript彈出框中

許多在此先感謝。

php文件應該是這樣一個:

<?php 

    // 1. Create a database connection 
    $connection = mysql_connect("localhost","root","password"); 
    if (!$connection) { 
     die("Database connection failed: " . mysql_error()); 
    } 

    // 2. Select database to use 
    $db_select = mysql_select_db("manage_projects",$connection); 
    if (!$db_select) { 
     die("Database selection failed: " . mysql_error()); 
    } 

    // 3. Perform database query 
    $result = mysql_query("SELECT survey_desc FROM subjects ORDER BY id DESC LIMIT 0,1", $connection); 
    if (!$result) { 
     die("Database query failed: " . mysql_error()); 
    } 

    // 4. Use returned data 
    while ($row = mysql_fetch_array($result)) { 
     echo $row["survey_desc"]."<br />"; 
    } 

    // 4.1 Alternative way to use returned data 
    /* $row = mysql_fetch_array($result); 
    echo $row["survey_desc"]."<br />"; 
    */ 

    // 5. Close connection 
    mysql_close($connection); 
?> 

HTML文件:

<html> 
<head> 
<script type="text/javascript src="myscript.php""> 

    //if clicked Yes open new page if Cancel stay on the page 
    function popup(){ 
    var r=confirm("echo the php query here"); 
     if (r==true) 
      { 
      window.location = "http://example.com"; 
      }  
} 
</script> 
</head> 
<body onload ="popup()"> 

</body> 
</html> 

回答

0
<head> 
<script type="text/javascript"> 
function popup(){ 
    var xhr=null; 

    if (window.XMLHttpRequest) { 
     xhr = new XMLHttpRequest(); 
    } 
    else if (window.ActiveXObject) { 
     xhr = new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    xhr.onreadystatechange = function() { 
     if(xhr.readyState == 4){ alert_ajax(xhr); } 
    } 
    xhr.open("GET", "myscript.php", true); 
    xhr.send(null); 
} 
function alert_ajax(xhr){ 
    var docAjax= xhr.responseText; 
    r=confirm(docAjax); 

     if (r==true) 
      { 
       window.location = "http://example.com"; 
      } 
} 
</script> 
</head> 
+0

嗨mgraph,感謝您的答覆 - 我已經試過你的一段代碼,我得到的彈出唯一的問題是,我必須點擊兩次「是」按鈕,然後我得到顯示的變量... – Daniel 2012-03-19 15:58:56

+0

@丹尼爾看到更新腳本 – mgraph 2012-03-19 16:06:44

+0

非常感謝。現在真的在工作。從我以前的代碼中去掉的唯一功能是當我點擊OK按鈕時,我沒有重定向到我想要發送用戶的頁面。在我之前的代碼中,點擊確定按鈕後,用戶被重定向到一個新頁面「window.location =」http://example.com「;」你有什麼建議我可以實現這一點。非常感謝。 – Daniel 2012-03-19 16:24:55

4

可以呼應成JavaScript:

var r=confirm("<?php echo $relevant_variable; ?>"); 

而且它不建議使用死()在生產環境中。

+0

爲什麼'die()'不被推薦? – 2012-03-19 14:37:36

+0

基本上,如果出現問題,錯誤會同時殺死您的網站,並且對所有人都可見,這是一個安全問題。您應該使用trigger_error()或自定義函數來進行錯誤報告。 – Ynhockey 2012-03-19 15:32:04

+0

嗨Ynhockey,謝謝你的回覆 - 我已經嘗試了你在發佈我的問題之前所說的話,但它不起作用。我進入彈出窗口的是<?php echo $ related_variable;?>。 – Daniel 2012-03-19 15:34:49

0
<?php 
    // Your php code; 
    $myVar="your value that you want to pass to js"; 
?> 
<html> 

    <head> 
    <script> 
     //if clicked Yes open new page if Cancel stay on the page 
     function popup(){ 
     var mvar = '<?php echo $myVar ;?>'; 
     var r=confirm(mvar); 
     if (r==true) 
     { 
      window.location = "http://example.com"; 
     }  
    } 
    </script> 
</head> 
    <body onload ="popup()"> 

    </body> 
</html> 

只需將您的兩個文件合併到一個php文件中即可。

+0

嗨Sheikh,感謝您的回答 - 不幸的是,我需要保持這些文件分離,但將兩個文件它只會回顯$ myVar忽略完整的JavaScript彈出框 – Daniel 2012-03-19 15:33:54

+0

與上面相同:變量不會被轉義。如果在腳本中包含引號('「')或換行符('\ n'),該腳本將會崩潰。值。 – jwueller 2012-03-19 17:07:27

0

使用PHP的json_encode()-function

var r = confirm(<?php echo json_encode("the php query here"); ?>); 

它會把你和總是產生有效的JavaScript,因爲JSON是JavaScript語法的子集。