Jquery POST发送多个变量

时间:2014-03-10 17:55:19

标签: javascript jquery

我一直试图在我的网站上找出这个问题一段时间了 - 我有一堆用户可以点击的“星星”。

点击星星将文件加载到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,现在,我可能不得不重写整个代码块,以便colony函数和starInformation函数是分开的而不是相互作用。但是在我做这个之前,我想在代码上得到第二,第三甚至第四组。

1 个答案:

答案 0 :(得分:1)

如果您要获得多个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() { ... } );