删除选择的图像

时间:2015-10-21 14:59:28

标签: php jquery ajax

有一个带有订单的网站,其中每个订单都附有(图片),我们可以看到,但不能删除。(因为使用PrettyPhoto)也使用Fat Free Framework。

<小时/> 我做了什么:

制作输出窗口,选择带有复选框和按钮删除的图片,并在点击删除btn时附加JQuery。虽然我不同意确认,但它的工作正常。然后没有任何事情发生,这对我来说太糟糕了。我希望明天会有效。
主要网页(部分)

<div id="fileDelete" class="modal modal-userinfo hide fade">
<?php
    $Attaches = GetOrderAttaches($orderDetail->getID(), ATTACH_OWNER_ACCESSOR);
?>
<div class="modal-header">
    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
    <h3>Выберите файлы для удаления из заявки</h3>
</div>
<div class="modal-body">
    <form class="form-vertical">
        <fieldset>
            <div class="control-group">
                <label class="control-label" for="checkboxes">Прикреплённые файлы:</label>
                <div class="controls">
                    <ul class="thumbnails">
                        <?php foreach ($Attaches as $Attach) :?>
                            <li class="span1">
                                <label class="checkbox" for="checkboxes-<?php echo $Attach['AttachID']; ?>">
                                    <?php echo $Attach['FileName']; ?>
                                    <input type="checkbox" name="fileToDelete" id="checkboxes-<?php echo $Attach['AttachID']?>"
                                           value="<?php echo $Attach['AttachID']; ?>">

                                    <a href="<?php echo('/upload/files/' . $Attach['FileName']); ?>"
                                       class="thumbnail">
                                        <?php
                                            $thumbnail_src = (mb_strtolower(pathinfo($Attach['FileName'], PATHINFO_EXTENSION)) == 'pdf') ? 'pdf.jpg' : $Attach['FileName'];
                                        ?>
                                        <img src="<?php echo('/upload/files/thumbnail/' . $thumbnail_src); ?>"
                                             alt="<?php //echo $Attach['RealFileName'] ?> ">
                                    </a>
                                </label>
                            </li>
                        <?php endforeach ?>
                    </ul>
                </div>
            </div>
        </fieldset>
    </form>
</div>
<div class="modal-footer">
    <span class="btn btn-danger enabled">
        <span>Удалить</span>
        <input id="filedeletebtn" name="deletingfiles" type="button" multiple>
    </span>
</div>

负责删除btnclick上的文件的脚本

    $('#filedeletebtn').on('click', function(){
    var iSelectedFiles = $('#fileDelete').find("input:checkbox:checked").serializeArray();
    var count = iSelectedFiles.length;
    if (count != 0) {
        var html = 'Вы действительно хотите удалить выбранные фото? Элементов: ' + count;
        bootbox.confirm(html, function (result) {
            if (result) {
                $.each(iSelectedFiles, function (index, file) {
                    $.ajax({
                        type: 'POST',
                        url: 'api/order/images/' + file.value,
                        data: file.value
                    })
                        .fail(function (file, textStatus, jqXHR) {
                            bootbox.alert('Возникла проблема при удалении изображений: </br>' + file.statusText);
                        });
                });
            }
        });
    } else {
        bootbox.alert('Выберите файлы для удаления!');
    }
});

在文件api / index.php中添加了

F3::route('POST /order/images/@ID [ajax]', 'OrderController->deleteImages');

在控制器Order.php中添加了

public function deleteImages()
{
    try {
        $data = $_POST['data'];
        $queryFileName = Dbh::getInstance()->prepare("DELETE FROM attaches WHERE attachID=?");
        $queryFileName->execute(array($data));
    } catch (Exception $e){
        $this->output['error'] = true;
        $this->output['message'] = $e->getMessage();
    }
}

<小时/> 那么,如何让它活着?无法理解错误。

1 个答案:

答案 0 :(得分:0)

所以......我做到了!在控制器文件中需要更改行:

$data = $_POST['value'];

在需要AJAX更改行的脚本文件中:

$.ajax({
      type: 'POST',
      url: 'api/order/images/' + file.value,
      data: file
})

看起来这是件小事,但昨天我花了一整天时间来解决这个问题。希望,我的经验会对任何人有帮助。