为什么这个脚本会调用服务器两次?

时间:2012-12-30 23:46:26

标签: jquery ajax google-chrome-extension

我希望这是足以识别问题的代码 - 我一直在试图解决这个问题。它是Chrome扩展程序弹出窗口部分的Javascript。

$('#save').click(function() {
    var baseURL = 'http://example.com/endpoint?';
    baseURL += 'a=' + encodeURIComponent($('#a').val());
    baseURL += '&b=' + encodeURIComponent($('#b').val());
    baseURL += '&c=' + encodeURIComponent($('#c').val());
    baseURL += '&d=' + encodeURIComponent($('#d').val());
    if ($('input#private').is(':checked')) {
        baseURL += '&private=true';
    }
    $('#form').css('display', 'none');
    $('#loader').fadeIn(500, function() {
        $('#popup-load').load(baseURL, function() {
            window.close();
        });
    });
});

我已经检查过,按钮(#save)没有被点击两次(添加alert调试代码),可能是服务器端有错误吗?

1 个答案:

答案 0 :(得分:0)

我有类似的问题。我通过创建一个全局标志解决了它,并在第一次运行时使其无效。每次通话都会检查此项。很脏,但做了这个工作。

<script type="text/javascript">
    var firstRun = true;

    $('#element').load(function() {
        if (firstRun) {
            firstRun = false;
            // Rest of your code
        }
    }
</script>