2014-02-11 43 views
0

我有一個js函數,它傳遞一個fileid以通過php腳本刪除。 我不知道如何將JavaScript參數從JavaScript轉換爲PHP變量。將JavaScript函數參數轉換爲php變量

這是我迄今所做的:

<script> 
    function deleteFile(file) 
    { 
     var r = confirm("Are you sure you want to delete this file?"); 
     if (r === true) 
     { 
      <?php 
      $idfile = file; // How to convert it?? 
      unlink(mysql_result(
       mysql_query("SELECT filepath FROM 
        file where idfile='$idfile'"), 0, 0)) 
       or die("Could not delete file"); 
      mysql_query("DELETE FROM file WHERE fileid=$idfile") 
       or die("Cannot delete file"); 
      echo "File has been deleted successfully."; 
      ?> 
     } 
    } 
</script> 

我有一個按鈕也:

echo "<button onclick=\"deleteFile($fileid)\">Delete</button>"; 

UPDATE

function deleteFile(file) 
{ 
    var r = confirm("Are you sure you want to delete this file?"); 
    if (r === true) 
    { // doesn't go to deletefile.php 
     $.ajax({ 
      url: "/deletefile.php", 
      method: 'POST', 
      data: { 
       id: file 
      } 
     }); 
    } 
} 

enter image description here

+1

一個是服務器端,一個是客戶端。沒有轉換它。你必須打電話給服務器。 – Danny

+1

看起來你對服務器端和客戶端代碼的工作方式感到困惑。服務器端代碼無法知道客戶端發生了什麼,除非通過使用像ajax這樣的技術告訴服務器端。 –

+2

PHP正在構建頁面時在服務器上運行。 PHP完成後,Javascript在客戶端上運行。您無法將JS變量轉換爲PHP變量,因爲PHP不再運行。您需要通過提交表單,關聯鏈接或使用AJAX將某些內容發送到服務器。 – Barmar

回答

5

這是行不通的。 JavaScript和PHP是完全獨立的實體,可以在不同的時間執行。

PHP是一種服務器端語言。 PHP代碼在您的服務器上執行並向Web瀏覽器返回響應。

JavaScript是客戶端語言。它在用戶與瀏覽器中的頁面進行交互時執行, PHP代碼執行後執行。

您需要編寫一個單獨的PHP腳本,該腳本採用要刪除的文件的ID,然後使用AJAX發送請求以使用指定的文件ID將其刪除。

+0

我不知道什麼是AJAX。在刪除之前,我可以先向用戶顯示一個保密信息嗎?怎麼樣?通過調用另一個頁面'deletefile.php?id = 303'例如? – user1234524521

+1

@ user1234524521你會基本上是代替你在'if'語句JavaScript代碼進行AJAX請求有PHP代碼(如定期向服務器發出請求,但沒有涉及到頁面重載)到任何PHP腳本將處理刪除文件。像'deletefile.php?id = 303'這樣的東西可以工作,是的;你只需要取出'id'參數,然後運行SQL來刪除文件。這裏有一個關於MDN的AJAX的介紹:https://developer.mozilla.org/en/docs/AJAX –

3

你不能把一個JavaScript變量在PHP,但你可以做一個AJAX發送$id_file

$.ajax({ 
     url: "/action.php", 
     method: 'POST', 
     data: { 
      id: file, 
     } 
}); 

然後在PHP的動作就可以使用$_POST['id']並進行查詢。

+0

這行會將我重定向到'action.php'嗎? – user1234524521

+0

是的,但你需要這個功能。把$ .ajax放在你的函數中。 Php也可以返回一條消息。 $就({ URL: 「/action.php」, 方法: 'POST', 數據:{ ID:文件, } }) .done(功能(數據){的console.log (數據)} 數據是消息,U可以看到更多的https://api.jquery.com/jQuery.ajax/和u可以用json_encode – Netzach

+0

返回一個JSON請參閱的問題。我已經更新了。 – user1234524521

3

比較好的做法是將AJAX用於jQuery。這樣你創建的代碼就無法工作。嘗試這個。

與ID

<?php 
    echo '<button class="delete_button" data-id="'.$id.'">delete me!</button>'; 
?> 

下載的jQuery從here生成按鈕,將其保存到項目文件夾。

發送使用jQuery

<script type="text/javascript" src="/path/to/jquery.min.js"> 
<script type="text/javascript"> 

$(".delete_button").click(function() { 
    var id = $(this).data("id"); 
    $.post("handler.php",{del: id}, function(data) { 
    if(data) 
     { 
     alert("deleted successfully!"); 
     window.location = "/your/desired/url"; // redirect after success 
     } 
    } 
}); </script> 

POST請求刪除在handler.php

if(array_key_exists("del", $_POST)) 
{ 
// delete in mysql 
} 
+0

如何我做的jQuery包括?? – user1234524521

+0

編輯,展示如何包括jQuery的 – Kudlas

1
function deleteFile(file) 
{ 
    var r = confirm("Are you sure you want to delete this file?"); 
    if (r === true) 
    { // doesn't go to deletefile.php 
     $.ajax({ 
      url: "/deletefile.php", 
      method: 'POST', 
      data: { 
       id: file 
      } 
     }) 
     .done(function(data) { 
     console.log(data); 
     }); 
    } 
} 

<?php 
    $idfile = $_POST['id']; // How to convert it?? 
    unlink(mysql_result(
     mysql_query("SELECT filepath FROM 
      file where idfile='$idfile'"), 0, 0)) 
     or die("Could not delete file"); 
    mysql_query("DELETE FROM file WHERE fileid=$idfile") 
     or die("Cannot delete file"); 
?> 

不會去deletefile.php?也許網址是不正確的

+0

瀏覽器控制檯說:'的ReferenceError:$?是不是defined' – user1234524521

+0

你有jQuery的 U可以下載http://jquery.com/download/或 或嘗試 Netzach

+0

@ user1234524521'$'來自jQuery。你有沒有在你的頁面中引用jQuery? – JLRishe