2010-02-03 23 views
1
echo "<a href=#> Delete </a>"; 

每当用户点击删除时,都应该调用javascript函数进行确认。在Javascript函数的某个地方,php代码应该用于删除操作。我怎么做?使用“一些PHP代码到这里”和“一些JavaScript函数()”;“让我知道在哪里放什么。谢谢。在PHP块内调用JavaScript,反之亦然

+2

你的问题建议你可能不知道服务器端之间的差别(执行什么)和(执行的)客户端。如果这是正确的,那么我强烈建议您熟悉http协议的请求/响应概念,从而熟悉客户端/服务器端的差异。 – 2010-02-03 19:15:09

回答

1

JavaScript函数在客户端执行(在浏览器中),PHP在服务器上执行。所以,JavaScript必须通过HTTP发送一条消息到服务器,由PHP来处理。 PHP将执行删除。合理?

消息发送到服务器的可能通过AJAX发送。

+0

因此,HTTP协议有一种新的请求方法叫做'AJAX'?不要个人承担,但...学习一点AJAX。 – Crozin 2010-02-03 19:02:51

+0

我的意思是建议作者研究AJAX;似乎她可能不熟悉它。 (并且您的评论可能很容易被认为是冒犯性的。) – Upperstage 2010-02-03 19:06:17

2

这是假设你使用jQuery ...

<a href='javascript:delete();'>Delete</a> 

<script type="text/javascript"> 

function delete() 
{ 
    $.post("/your_script.php", {}, function(result) { 
    }); 
} 

</script> 
+0

调用confirm()将用于确定$ .post()是否执行。您还需要取消点击事件的默认操作。 – lincolnk 2010-02-03 19:07:59

0

PHP是一种服务器端技术,而JS是一个客户端。他们不能互相交流 - 换句话说:他们是完全独立的。

PHP只能是一个JS代码输出代码:

echo 'document.getElementById("test").appendChild(document.createTextNode("' . $myVar . '");'; 

这是所有PHP可以做。 JavaScript也不能直接与PHP交互。您将不得不使用AJAX发送新的HTTP请求并处理返回的数据。

0

PHP是一种服务器端语言,因此您不能将PHP脚本输出到浏览器,并期望它将使用PHP引擎进行解析。

您正在寻找的可能是AJAX,或者只是将用户重定向到另一个页面(使用不同的URL参数)或提交表单。 AJAX不需要从浏览器重新加载页面,而另外两种方法可以。

无论如何,你可以用“点击”的方法执行JS脚本,当用户点击该元素,就会向执行:<a href="#" onclick="myFunc();">Delete</a> 但下面的方法看起来更好,并视为一种理想的一个:

<a href="#" id="myId">Delete</a> 
<script type="text/javascript"> 
document.getElementById("myId").onclick = myFunc; 
</script> 
0

由于涉及Ajax,我们假设您可以使用jQuery来处理XHR等。

<script> 
$('#del').click(function(ev){ 
    ev.preventDefault(); 
    var del_conf=confirm('Are you sure you want to delete this item?'); 
    if(del_conf){ $.post('delete.php',{'del':1,'id':123123},function(data){ 
     alert(data.result);},'json'); 
     } 
    }); 
</script> 
<a id='del'>Delete</a> 

好的,这是一些JS和HTML。现在,您需要一个单独的PHP脚本来处理帖子。为了与示例一起使用,这将保存在名为'delete.php'的同一目录中。

<?php 
$del=(int)$_POST['del']; 
$id=(int)$_POST['id'] 

if($del<1 || $id<1){ exit; } 
else{ 
    //do your DB stuff 
    } 
if($db_success){ 
    echo json_encode(array('result'=>'success')); 
    } 
else{ 
    echo json_encode(array('result'=>'error')); 
    } 
0

这里是使用jQuery另一个例子:

<div id="message"></div> 
<a class="action" type="delete" rel="1234567">delete</a> 
<script type="text/javascript"> 
$('a.action').click(function(){ 
var $this = $(this); 

var processResponse = function(data){ 
    //optionaly we can display server response 
    $('#message').html(data); 
    return; 
}; 

var postPparams = { 
    module:'my_module_name', 
    action:$this.attr('type'), 
    record_id: $this.attr('rel') 
}; 
$.post('/server.php',postPparams, processResponse); 
}); 
</script>