Javascript jQuery计时问题(ajax)

Javascript jQuery计时问题(ajax),javascript,jquery,ajax,Javascript,Jquery,Ajax,如果按下某个按钮,我将尝试向python脚本发送两个值 但有一个问题: 带有警报(“测试”)一切都很完美。但是如果没有它,就没有任何东西可以发送 我认为这是一种时间问题,但我无法真正思考问题所在。 奇怪的是,我甚至可以将警报放在ajax函数前面(但仍然在$(“#submit”)。单击部分),它工作得非常好 <script type="text/javascript" src="./jquery-1.4.4.min.js"></script> <script type

如果按下某个按钮,我将尝试向python脚本发送两个值

但有一个问题: 带有
警报(“测试”)一切都很完美。但是如果没有它,就没有任何东西可以发送

我认为这是一种时间问题,但我无法真正思考问题所在。 奇怪的是,我甚至可以将警报放在ajax函数前面(但仍然在
$(“#submit”)。单击
部分),它工作得非常好

<script type="text/javascript" src="./jquery-1.4.4.min.js"></script>
<script type="text/javascript">
/*<![CDATA[*/
$(document).ready(function(){
    $("#submit").click(function(){
        jQuery.ajax({
            type: "POST",
            url: "../../../cgi-bin/testCgi.py",
            data: {"nick" : $("#nick").val(), "msg" : $("#msg").val()},
            success: function (msg) {
                    alert("Data: " + msg);
            }
        });
        alert("test");
    });
});
/*]]>*/
</script>

/**/
如果
#submit
是链接元素
或表单按钮,则需要取消默认操作

$("#submit").click(function(e){

    // added following line and the parameter in the function definition
    e.preventDefault(); 

    jQuery.ajax({
        type: "POST",
        url: "../../../cgi-bin/testCgi.py",
        data: {"nick" : $("#nick").val(), "msg" : $("#msg").val()},
        success: function (msg) {
                alert("Data: " + msg);
        }
    });
    alert("test");
});
如果不执行此操作,则页面将跟随链接或提交页面。

如果
#submit
是链接元素
或表单按钮,则需要取消默认操作

$("#submit").click(function(e){

    // added following line and the parameter in the function definition
    e.preventDefault(); 

    jQuery.ajax({
        type: "POST",
        url: "../../../cgi-bin/testCgi.py",
        data: {"nick" : $("#nick").val(), "msg" : $("#msg").val()},
        success: function (msg) {
                alert("Data: " + msg);
        }
    });
    alert("test");
});

如果不这样做,则页面会跟随链接,或提交页面。

我认为这是由于javascript的传播造成的。只需将警报(“测试”)替换为return false;也许可以解决这个问题你怎么知道什么都没有发送?您是在检查网络选项卡中的请求,还是因为没有看到第二个警报而假设没有发送任何请求?我认为这是由javascript的传播造成的。只需将警报(“测试”)替换为return false;也许可以解决这个问题你怎么知道什么都没有发送?您是在检查“网络”选项卡中的请求,还是因为看不到第二个警报而认为没有发送任何请求?如果是“提交”按钮,则最好将处理程序绑定到表单的
submit
事件。感谢您提供了一个出色的解决方案!如果是submit按钮,更好的做法是将处理程序绑定到表单的
submit
事件。感谢您提供了一个出色的解决方案!