Jquery没有显示结果

时间:2013-05-02 20:06:16

标签: jquery events javascript-events preventdefault

当用户点击删除时,我需要发出一个jquery来警告“你确定要删除”吗? 我一直在尝试很多,但没有找到任何解决方案

这是我的deletemovie.php

<?php
require('../system/initialize.php'); //load the connection file
?>

<html><script src="../js/jquery.js" type="text/javascript"></script>
<script type="text/javascript">
    $(function () {
        $(".delete").click(function () {
            if ( !confirm('Are you sure you want to delete?') ) {
                return false;
            } else {
                $.ajax({
                    url: "deletemovie.php",
                    data: {movie_id},
                    type: 'get',
                    async: false,
                    success: function(result) {
                        if( result.success ) {
                            alert("You have successfully deleted");
                        }
                    }
                })
            }
        })
     )
</script>
</html>

<?php
$movie_id=$_GET['movie_id'];
$insert_user=mysql_query("DELETE  FROM `movie` WHERE `movie_id` ={$movie_id}");
if($insert_user)
{ echo "DELETED";}
else
{ echo "error in registration".mysql_error(); }
?>

当然,在我的列表页面中,我做了:

  echo "<a class='delete' href='deletemovie.php?movie_id={$movie_id}'>". delete .'</a><br/></td>';

2 个答案:

答案 0 :(得分:1)

我的代码中至少有3个问题:

1.要使你的确认上升,你需要停止常规处理锚点击。这可以这样做:

$(".delete").click( function( event ) {
  event.preventDefault();
  if( !confirm( 'Are you sure you want to delete?' ) ){
    return false;

2.接下来会遇到麻烦,但这里没有描述您通过ajax发送的数据。它指定不正确。在我看来,根本不需要指定数据,因为所有数据都已存在于您的网址中(这意味着它将作为GET发送)。您所需要的只是获取链接的href属性。

$(function () {
    $(".delete").click(function ( event ) {
        event.preventDefault();
        if (!confirm('Are you sure you want to delete?')) {
            return false;
        } else {
            var url = $( event.target ).attr( 'href' );
            $.ajax({
                url: url,
                async: false,
                success: function (result) {
                    if (result.success) {
                        alert("You have successfully deleted");
                    }
                }
            });
        }
    });
});

3.最后一个麻烦是没有人给你一份工作,因为没有人想得到这样一个不受保护的代码。你绝不应该相信你从客户那里得到的任何东西你可以肯定的是,一旦有人会使用你留下的洞并且会破坏你的声誉。我的意思是你的代码的这一部分:

$movie_id=$_GET['movie_id'];
$insert_user=mysql_query("DELETE  FROM `movie` WHERE `movie_id` ={$movie_id}");

我正在谈论的风险: http://en.wikipedia.org/wiki/Sql_injection

答案 1 :(得分:0)

您缺少一些分号和括号。而且ajax调用的数据参数也应该有一个修正。只需使用以下代码,它将适用于您

http://jsfiddle.net/n7v5w/

$(function () {
    $(".delete").click(function () {
        if (!confirm('Are you sure you want to delete?')) {
            return false;
        } else {
            $.ajax({
                url: "deletemovie.php",
                data: {
                    'movie_id': <id of the movie>
                },
                type: 'get',
                async: false,
                success: function (result) {
                    if (result.success) {
                        alert("You have successfully deleted");
                    }
                }
            });
        }
    });
});

注意:您必须将<id of the movie>替换为您要删除的电影的实际ID