2014-02-11 42 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