Zend Framework Ajax Link для работы с диалоговым окном jQuery - PullRequest
0 голосов
/ 22 февраля 2012

Последние 3 недели я пытался заставить ajaxLink работать с диалоговым окном jQuery.У меня есть функция удаления закладок, и я хочу, чтобы появилось диалоговое окно, в котором вы должны подтвердить, что хотите удалить закладку, до того, как запрос Ajax сработает, и удалит закладку.

Я предполагаю, что мне нужнодобавить что-то в функцию beforeSend, но я не могу понять, что должно быть написано в нем.Может кто-нибудь посоветовать, что мне нужно сделать?Я надеюсь, что кто-то знает ответ, у меня заканчиваются идеи.Заранее большое спасибо!

Здесь мой исходный код:

 echo $this->ajaxLink("Remove Bookmark","/bookmark/remove/article  ".$this->escape($entry->id),
               array(
                    'id' => '',
                    'class' => 'btn orange delete dialog-confirm',
                    'dataType'=>'JSON', 
                    'method' => 'post',
                    'update' => '.bookmark',
                    'beforeSend' => '????',
                    'complete' => '$("."+data+"").remove();if ($(".watchlist").length == 0){$(".watch").append("<p>No items watched</p>")}'
           ));

И мое диалоговое окно jQuery:

$('.dialog-confirm').click(function(e){

    e.preventDefault();
    var URL = $(this).attr("href");
    $(this).css('display','block');

    $('#dialogbox').dialog({

        resizable: false,
        height:180,
        width:350,
        modal: true,
        closeOnEscape: true, 
        buttons: {
            "Yes, delete bookmark": function() {
              window.location.href = URL;
              return true;
            },
            Cancel: function() {
                $( this ).dialog( "close" );
            }
        }

        });   
});

1 Ответ

1 голос
/ 22 февраля 2012

Ваш запрос Ajax должен запускаться только в том случае, если пользователь нажимает кнопку «Да, удалить закладку» .Поэтому вам нужно добавить к этой кнопке функцию jQuery ajax и удалить первую ajaxLink().

//in your view.phtml
<div id="dialogbox" style="display:none">Do you really want to remove this bookmark?</div>
<span style="cursor:pointer" class="btn orange delete dialog-confirm" id="1">Remove Bookmark</span>

<?php $this->jQuery()->addOnload('
$(function() {
    var id;

    $("#dialogbox").dialog({
        resizable: false,
        height:180,
        width:350,
        modal: true,
        buttons: {
            "Yes, delete bookmark": function() {
                $.ajax({
                    type: "POST",
                    url: "/bookmark/remove/article",
                    dataType: "json",
                    data: "id="+id,
                    success: function(data, textStatus, jqXHR) {
                        $("."+data+"").remove();
                        if ($(".watchlist").length == 0) {
                            $(".watch").append("<p>No items watched</p>")
                        }
                    }
               });
           },
           Cancel: function() {
               $( this ).dialog( "close" );
           }
       },
    });   


    $(".delete").click(function(e) {
        id = this.id;
        console.log(id);
        $( "#dialogbox" ).dialog( "open" );
    });
});
'); ?>

Теперь, если вы нажмете Удалить закладку , отобразится jQuery.Диалог с двумя кнопками: Отмена и «Да, удалить закладку» , и после нажатия кнопки «Да» вызывается функция jQuery.ajax и отправляется идентификатор в / bookmark / remove /статья в качестве параметра.

...