【问题标题】:Gallery delete album with ajax fails on second使用 ajax 的画廊删除专辑第二次失败
【发布时间】:2015-04-05 13:11:47
【问题描述】:

我创建了一个画廊,用户可以在其中通过 ajax 删除相册,我的问题是,当我单击“删除”按钮第一次工作时,一切运行正常,文件夹和图片被删除,但是当我转到第二张专辑并尝试删除它,ajax 给了我成功但没有任何内容被删除!错误:函数也没有给我一个错误(在控制台中)ajax像正常一样运行......

这里是触发ajax的按钮(表单)

<form action='' method='post'>
<input type='hidden' id='album' name='album' value='$albid'>
<center><input type="submit" class="javagalleryAlbumDeleteBtn" name="createAlbum" value="Delete Album"></center>
</form>

这里是包含ajax的js文件

// CHECK THAT DOCUMENT IS READY
$(document).ready(function() {

// This is the button we are looking for.
$('.javagalleryAlbumDeleteBtn').click(function() {

// Get values from form
var album = $("#album").val();

// Put the vars in a string
var dataString = 'album='+album;

    $.ajax({
            type: "POST",
            url: "../gallery/deleteAlbum.php",
            data: dataString,
            cache: false,
            success: function(data){console.log(data);},
            error: function(jqXHR, textStatus, errorThrown) {console.log(textStatus, errorThrown););

    }// End success

    }); // End ajax

    return false; // avoid to execute the actual submit of the form.

    }); // End #login click

    }); // End document ready

这里是 deleteAlbum.php 文件

$getalbumid = $_POST['album'];

$sql = mysql_query("SELECT gallery_address FROM users_galleries WHERE gallery_id = '$getalbumid'") or die(mysql_error());
list($galaddress) = mysql_fetch_row($sql);

if(mysql_num_rows($sql)){

// delete the pictures in the DB
mysql_query("DELETE FROM pictures WHERE picalbum = '$getalbumid' AND picowner = " . $_SESSION['id'] . "")or die(mysql_error());

// delete the album from the DB
mysql_query("DELETE FROM users_galleries WHERE gallery_id = '$getalbumid' AND gallery_userid = " . $_SESSION['id'] . "  LIMIT 1")or die(mysql_error());

// Function that deletes all content in folder and the folder
folderDelete($galaddress);

} // end delete

【问题讨论】:

  • 让你的 dataString 像这样 dataString = 'album:album';
  • 感谢提醒(我现在已经改了),但并没有真正解决我的问题:/

标签: php jquery ajax


【解决方案1】:

首先 - 你的 HTML 页面不能包含具有相同 id 的元素,所以在表单中:

<form action='' method='post'>
   <input type='hidden' id='album' name='album' value='$albid'>
   <center><input type="submit" class="javagalleryAlbumDeleteBtn" name="createAlbum" value="Delete Album"></center>
</form>

尝试改变课堂。在 JS 中:

// Get values from form
var album = $(this).closest('form').find('.album').val();

这将帮助您将正确的专辑 ID 值发送到服务器端。

第二件事——看MySQL注入文章——http://www.tizag.com/mysqlTutorial/mysql-php-sql-injection.php

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-17
    • 2020-10-02
    • 2011-03-22
    • 1970-01-01
    • 2015-02-01
    • 2013-02-07
    相关资源
    最近更新 更多