在下一行代码之后是否有机会调用ajax?

时间:2015-06-13 15:31:12

标签: jquery ajax

    $("#ajaxform").submit(function(e){
        var info = $(this).serialize();
        $.ajax(
        {
            url : "controller",
            type: "post",
            data : info,
            success:function(data, textStatus, jqXHR) 
            {
                 $('.valid').html(data);
            }
        });
        e.preventDefault()
    });
    $(".mainbutton").click(function(){
        $("#ajaxform").submit();
        if($('.valid').html(data) == "success"){ // could this fail?
            var info = $("#ajaxform").serialize();
            $.get("controller", info);
        }
    });

我正在进行ajax调用,并且在响应中我将"成功"。是否有机会(a(' .valid')。html(数据)=="成功")之前和之后调用ajax调用,实际上是if语句失败?

2 个答案:

答案 0 :(得分:0)

即可。 Ajax调用是异步。因此,您不能指望顺序流。最好在回调中处理,如

$("#ajaxform").submit(function(e){
    var info = $(this).serialize();
    $.ajax(
    {
        url : "controller",
        type: "post",
        data : info,
        success:function(data, textStatus, jqXHR) 
        {
             $('.valid').html(data);
             if($('.valid').html(data) == "success"){ 
                 var info = $("#ajaxform").serialize();
                 $.get("controller", info);
            }
        }
    });
    e.preventDefault()
});
$(".mainbutton").click(function(){
    $("#ajaxform").submit();
});

答案 1 :(得分:0)

您可以使用 .promise()。done();

success:function(data, textStatus, jqXHR) 
            {
                 $('.valid').html(data).promise().done(function(){
                      $.get("controller", info);
                 });
            }

$(".mainbutton").click(function(){
    $("#ajaxform").submit();
    // or
    //$("#ajaxform").trigger('submit');
});

有关.promise()的更多信息。完成()看看http://digitizor.com/2013/08/03/jquery-html-callback-function-using-promise/