簡體   English   中英

jquery $ .ajax強制POST

[英]jquery $.ajax force POST

我有一個ajax函數,它創建一個觸發另一個ajax函數的鏈接。 出於某種原因,如果我設置了type: "POST"則第二個ajax函數拒絕通過POST事件type: "POST"

這兩個功能如下:

function HandleActivateLink(source) {
            var url = source.attr('href');
            window.alert(url)
            $.ajax({
                type: "POST",
                url: url,
                success: function (server_response) {
                    window.alert("well done")
                }
            });
            return false;
    }


    function HandleDeleteLink() {
        $('a.delete-link').click(function () {
            var url = $(this).attr('href');
            var the_link = $(this)
            $.ajax({
                type: "POST", // GET or POST
                url: url, // the file to call
                success: function (server_response) {
                    if (server_response.object_deleted) {
                        FlashMessage('#form-success', 'Link Deleted <a class="activate-link" href="' + url.replace('delete', 'activate') + '">Undo</a>');
                        $('a.activate-link').click(function(){
                            HandleActivateLink($(this));
                        });

                        the_link.parent().hide();
                    } else {
                        var form_errors = server_response.errors;
                        alert(form_errors)
                    }
                }
            });
            return false;
        });
    }

您會注意到HandleDeleteLink成功創建了一個新鏈接,並為創建的鏈接生成一個新的單擊事件。 一切正常但HandleActivateLink將請求作為GET發送到服務器。 我嘗試過使用$.post而沒有運氣。

任何指針,非常感謝。

在第二個事件中,您不會通知客戶端阻止默認行為。

一種方法是改變:

$('a.activate-link').click(function(){
                            HandleActivateLink($(this));
                        });

至:

$('a.activate-link').click(function(){
                            return HandleActivateLink($(this));
                        });

(這是有效的,因為HandleActiveLink已經返回false。)

更好的方法是將事件參數傳遞給click函數並告訴它為preventDefault

$('a.activate-link').click(function(e){
                            e.preventDefault();
                            HandleActivateLink($(this));
                        });

你的網址是什么? 順便說一下你不能通過javascript發送跨域帖子。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM