在Php块中调用JavaScript,反之亦然

时间:2010-02-03 18:53:32

标签: php javascript

echo "<a href=#> Delete </a>";

每当用户点击删除时,都应该调用javascript函数进行确认。在Javascript函数的某处,php代码应该用于删除操作。我怎么做?使用类似“一些PHP代码在这里”和“一些javascript函数();”让我知道在哪里放什么。感谢。

7 个答案:

答案 0 :(得分:2)

这假设您正在使用jQuery ...

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

<script type="text/javascript">

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

</script>

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

答案 3 :(得分:0)

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

PHP只能输出JS代码的代码:

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

这都是PHP可以做到的。 JavaScript也无法直接与PHP交互。您必须使用AJAX发送新的HTTP请求并处理返回的数据。

答案 4 :(得分:0)

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

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

无论如何,您可以使用“onclick”方法执行JS脚本,该方法在用户点击元素时执行:<a href="#" onclick="myFunc();">Delete</a> 但是下面的方法看起来更好,被认为是理想的方法:

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

答案 5 :(得分: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'));
  }

答案 6 :(得分: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>