日期:2014-05-16  浏览次数:20382 次

问一个Jquery的Ajax异步处理的问题
JScript code

$("#form").submit(function() {
    var word = $('.word').attr('value');

    $.get('/analysis/searchclick',{word:word, type:1}, function() {
            $('#form').submit();
    });
});



JScript code

var returnFlag = 0;

$("#form").submit(function() {
    var word = $('.word').attr('value');

    $.get('/analysis/searchclick',{word:word, type:1}, function() {
            returnFlag = 1;
            $('#form').submit();
        });

    if(returnFlag != 1) {
        return false;
    }
});



其实上面两段代码,我是想实现同一个功能:当提交id为“form”的表单时,触发一个Ajax事件,然后在Ajax完成后,再出发提交表单的操作。

最开始我用的第一段代码,但发现每次还没等Ajax发送完成就跳转了(因为跳转的页面没有接到传来的值),因此我暂且认为是Ajax的异步处理操作,即它只是发送了,但不管发送是否完成,都继续往下执行,所以触发表单提交就走到了发送Ajax完成之前。

但后来又有一段代码让我很纳闷:
JScript code

<a href="xxx.php" class="testa" name="国贸">链接</a>
$(".testa").click(function(){
    var keyword = $(this).attr('name');
    $.get('/analysis/searchclick',{word:keyword, type:1}, function() {});
})



这段代码,当我点击这个链接的时候,它就是等Ajax发送完成,并成功返回的时候,再执行跳转操作,为什么这次Ajax没有异步操作呢?


------解决方案--------------------
表格提交很特殊。。。
------解决方案--------------------