2012-07-28 72 views
0

使用PHP這是我的js代碼:在window.location.href

function check() { 
    var delvar = "<? $_POST["del"]; ?>"; 
    var answer = confirm("Are you sure you want to delete the article?") 
    if (answer) { 
     window.location = "adm-site.php?del=" + delvar + "&delete=true"; 
    } 
} 

現在,我的問題是,delvar不起作用。所以url只是?del=&delete=true,而不是例如。 ?del=testarticle&delete=true

編輯:$_POST["del"]是在它所有的文章選擇標籤,所以你會選擇哪刪除
的HTML代碼:

<select name="del"> 
    <option value="none" SELECTED></option> 
    all articles echo'ed here by php 
</select> 
+2

怎麼樣回聲變量內容?示例:'<?= $ _ POST [「del」]?>' – CodeZombie 2012-07-28 15:01:43

+0

沒有使用'echo $ _POST [「del」]'或echo $ del' – finst33 2012-07-28 15:04:23

+0

好吧,你的意思是有一個表單包含'選擇'元素,你想在這個函數中使用這個值?下載你的HTML代碼。 – DavChana 2012-07-28 15:05:06

回答

1
var delvar = '<?php echo $_POST["del"]; ?>'; 

注意<?php代替也不鼓勵短代碼。

+1

官方的PHP文檔在哪裏說short_open_tag指令被棄用? – Jocelyn 2012-07-28 15:36:54

+0

更改措辭以反映您的意見 – peteroak 2012-07-28 15:42:08

+0

我同意「不鼓勵」。 – Jocelyn 2012-07-28 15:43:01

2

我相信你想這樣的場景:

  • 用戶得到一個頁面含有所有的文章作爲值/選項的選擇標籤的形式。
  • 用戶選擇他/她想要刪除的文章。
  • 用戶單擊按鈕。
  • 然後,您要將用戶重定向到網址adm-site.php?del=02&delete=true

因此,在這種情況下,只有JavaScript獲取所選文章值的值並將其嵌入到重定向URL中。所以,PHP在這裏無能爲力。所有的行爲都發生在客戶端。

試試這個HTML代碼:

<html> 
<head> 
<script language="JavaScript"> 
    function check(){ 
     var delvar=document.form1.del.options[document.form1.del.selectedIndex].value; 
     //alert(delvar); //debug 
     var answer = confirm("Are you sure you want to delete the article?") 
     if (answer) { 
      //alert("adm-site.php?del=" + delvar + "&delete=true"); 
      window.location = "adm-site.php?del=" + delvar + "&delete=true"; 
     } 

    } 
</script> 
</head> 
<body> 
<form name="form1"> 
    <select name="del"> 
     <option value="none" SELECTED>None</option> 
     <option value="01">Article 01</option> 
     <option value="02">Article 02</option> 
     <option value="03">Article 03</option> 
    </select> 
<input type="button" value="Delete This Article" onclick="check();"> 
</form> 
</body> 
</html> 

LIVE Demo at JSFiddle.net(警報重定向URL)

事情我已經編輯/更改:

  • 增加了一個名字form標籤。
  • 更改了向var delvar分配當前選定文章的值的方式。

否則所有的代碼都與您的代碼相同。

正如Pheonix所提到的,有點安全的代碼,和上面的代碼一樣,但是使用$ _POST。您需要在adm-site.php中使用$_POST而不是$_GET

<html> 
<head> 
<script language="JavaScript"> 
    function check(){ 
     var delvar = document.form1.del.options[document.form1.del.selectedIndex].value; 
     var agree = confirm("Are you sure you want to delete Article " + delvar + " ?"); 
     if (agree) 
      return true ; 
     else 
      return false ; 
    } //function check() ENDS 
</script> 
</head> 
<body> 
<form name="form1" action="adm-site.php" method="POST"> 
    <select name="del"> 
     <option value="none" SELECTED>None</option> 
     <option value="01">Article 01</option> 
     <option value="02">Article 02</option> 
     <option value="03">Article 03</option> 
    </select> 
    <input type="hidden" name="delete" value="true" /> 
    <input type="submit" name="submit" value="Delete this Article" onClick="return check();" /> 
</form> 
</body> 
</html> 

Demo at JSFiddle.net

+0

+1這解決了真正的問題。 – 2012-07-28 16:21:05

+0

這就對了!好樣的! – 2012-07-28 20:10:16

0

你的HTML包含"所以你需要圍繞單引號的PHP。如果您使用短標籤,請正確使用。那麼到底,它應該是這樣的:

var delvar = '<?= $_POST["del"]; ?>'; 
+3

我喜歡它,當懦夫投票給你,甚至不解釋自己。 – DanMan 2012-07-28 23:43:33

0

這裏是另一種方式來想一想:做一個鏈接到您要發送到的頁面,然後給它一個onclick這樣的:

<a href="/adm-site.php?del=<?php echo $_POST['del']; ?>&delete=true" onclick="return confirm('Confirm Deletion?')" >Delete</a> 

這可以工作,但它可能不適合您的環境,具體取決於觸發什麼check()

+0

在同一頁面上,選擇'select'並執行JavaScript代碼時,PHP無法回顯客戶端上的$ _POST ['del']。 – DavChana 2012-07-28 16:23:53

0
var delvar = "<? $_POST["del"]; ?>"; 

您正試圖結合JavaScript和PHP,但我們沒有這種類型的可能性,因爲JavaScript是客戶端腳本語言,PHP是服務器端腳本語言。 還有另一種方法結合使用javascript & php。請參閱this link