簡體   English   中英

jQuery POST發送多個變量

[英]Jquery POST sending multiple variables

我已經嘗試解決我的網站上的這個問題已有一段時間了,我可以為用戶單擊許多“星星”。

單擊星號會將包含有關星號的信息的文件加載到div中。 它還加載了一個按鈕,供玩家單擊並“接管”該星球。 但是,一切都很好並且很好-我最近發現了一個我不太確定如何處理的問題。

如果玩家出於某種原因在重新加載頁面之前單擊了多個星星,則當單擊該按鈕攻擊/無論是哪個星星時,它將在服務器上發送多個請求。 起初我以為這是我的編碼中發送有關所有星星的所有信息的內容,但是我逐漸意識到,玩家點擊的只是星星。

現在-這是代碼:

$.ajaxSetup ({
    // Disable caching of AJAX responses
    cache: false
});
    function loadStatus()
{
        $.ajax(
        {
            url:'world1.php', error: function () { }, dataType:'json',
            success: function(data)
            {
                denial = false;
                $('#credits').html(data.credits);
                $('#fuelleft').html(data.fuel);
                $('#energyleft').html(data.energy);
            }
        }); 
}
function currentStarMapURL(URL)
{
        $('#starmap').load(URL, {},
        function()
        {
            $('#loader').hide();
            fullStarInformation(URL);
            starInformation();
            setInterval(function() { $('.unknown').effect("highlight",{color:"#800000"}, 1500)});
            return false;   
        }
        );
}

/*
    purhcase upgrades
*/
/*
    Retriever Better Star Info 
*/
function fullStarInformation()
{
    $(".star").click(
        function()
        {
            $('#planet-bar').empty();
            val = this.id;
            url = "planet.php?sid="+val;
            $('#planet-bar').load(url, {'sid':val},
                function()
                {
                    colony(url);
                }
            );
        }
        );
}
function colony(url)
{
    $('#planet-bar').on("click", "button",
    function() {
        event.preventDefault();

        name = 0;
        $(this).hide();
            name = $(this).attr('sid');
            $.post('purchase.php?mode=planet', {sid: name}, 
                function () 
                { 
                    $('#planet-bar').load(url, {}, function () { currentStarMapURL(URL2); })
                }
                );  
        $(this).prop('disabled', true); 
         });

}

起初,我認為該問題是一個緩存問題,因此我在第一行中添加了$ .ajaxSetup,但這似乎沒有任何改變。 然后我想出了,也許是代碼被調用的方式-我最初有兩個獨立的函數; 一種用於進攻,一種用於殖民。 這兩個函數都在fullStarInformation函數中被調用,所以我將其全部移到一個函數中,但仍然遇到問題。

AFAIK,現在,我可能不得不重寫整個代碼塊,以使菌落函數和starInformation函數是分開的,並且彼此不起作用。 但是我想在開始之前先對代碼進行第二,第三,甚至第四次關注。

如果收到多個ajax調用,則可能是要設置多個事件處理程序。 只需快速瀏覽一下代碼,我認為您應該進行更改

function colony(url)
{
  $('#planet-bar').on("click", "button", function() { ... } );

function colony(url)
{
  $('#planet-bar').off("click", "button"); //unbind old event handlers
  $('#planet-bar').on("click", "button", function() { ... } );

暫無
暫無

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

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