上一个函数调用的值

时间:2017-06-01 14:15:43

标签: javascript jquery ajax forms

我有一些JavaScript代码,调用Ajax:

function foo(e, e1, curc) {
    var sender = (e && e.target) || (window.event && window.event.srcElement);
    var modal3 = document.getElementById('mymodal3');
    modal3.style.display = "block";
    var spin = 0;

    console.log("Code_I: ", e); ///<---- First log
    $('#mform9').submit(function (e2) {
        e2.preventDefault();
        e2.stopImmediatePropagation();

        spin = $('#spinner2').spinner("value");
        $('#spinner2').spinner("value", 0);

        console.log("Code: ", e);///<---- Second log
        document.getElementById("mform9").reset();

        $.ajax({
            type: 'POST',
            url: 'script.php',
            dataType: 'json',
            data: "id=" + e4 + "&mod=" + spin + "&curc=" + curc,
            success: function (data) 
            {
                modal3.style.display = "none";
                document.getElementById("itog").innerHTML = data.d + data.a;
            },
            error: function (xhr) 
            {
                modal3.style.display = "none";

            }
        });
        return false;
    });

}
});

}

我用HTML调用我的函数:

onclick="javascript:foo(7700000010032,1,140)"

在第一次通话中,一切正常。但是在第二次调用中,具有不同的第一个值,我在这里有了新的价值:

 console.log("Code_I: ", e); ///<---- First log

但是这里我有以前函数调用的值:

console.log("Code: ", e);///<---- Second log

所以,用不同的参数调用两次函数我得到了 第一个电话:Code_I:4820109927406代码:4820109927406。 第二个电话:Code_I:7622300813437代码:4820109927406 我无法理解什么是错的,为什么我的功能中有旧值。

1 个答案:

答案 0 :(得分:2)

这可能是因为每次调用foo函数时,都会在表单中附加一个新的.submit处理程序,每次都会创建一个新的作用域。这就是你在第二次通话后得到第一个电话的价值的原因。

解决方案:仅在$('#mform9').submit函数之外附加foo处理程序一次,如下所示:

let main // Initialize a variable outside of foo and submit, so you can access it from both

function foo(e, e1, curc) {
    // ...
    main = e
    console.log("Code_I: ", main )
    // ...
}

$('#mform9').submit(function (e2) {
    // ...
    console.log("Code: ", main )
    // ...
})