如何在等待单独的ajaxcomplete事件后触发锚点链接

时间:2014-02-24 10:15:04

标签: jquery ajax post onblur

我的方案是帮助您了解我的问题。

  1. 在我的页面上,我将onblur事件附加到许多输入字段。

  2. onblur事件调用服务器端方法Method1设置标​​志并返回true / false

    function compute(){

    $(' #processing')。attr(" value",true);

    $.ajax({
        url: '/Method1',
        type: 'POST',
        contentType: 'application/json;',
        data: JSON.stringify({ quantiter: 10}),
        success: function (data) {
            if (data == "true") {
               //set icon
                $('#processing').attr("value", false);
            }
        },
        error: function () {
    
        }
    });
    

    }

  3. on true,我更新了我的UI,我插入一个小图标表示该字段已更改

  4. 我面临的问题是: 修改输入后,用户可以单击“保存”按钮,触发不同的服务器端方法,方法2。

    <a onclick="Sauvegarder()">Save</a>
    
    
    function Sauvegarder() {        
        var newProcessor =  $('#processing').attr("value");
        ...cal Method 2
    }
    

    因此,onblur事件调用Method1但它没有完成,并且在Method1完成之前调用Method2。

    这样,就不会设置小图标。

    目标:我的目标是从onblur事件中获取结果,设置我的图标,然后在单击保存按钮时调用Method2。

    到目前为止,我试图声明一个全局js变量:processing。 我将此var设置为true,当我调用Method1时,如果成功,我将其设置为false。

    单击“保存”时,我会检查处理的值。 如果它是假的,意味着方法1已经完成,我称之为Method2。 这个解决方案的问题是,js变量处理的值只检查一次,它可能/可能尚未设置。

    其他方法可以做什么?

2 个答案:

答案 0 :(得分:0)

使用:

$.ajax({
    url: '/Method1',
    type: 'POST',
    async: false
    contentType: 'application/json;',
    data: JSON.stringify({ quantiter: 10}),
    success: function (data) {
        if (data == "true") {
           //set icon
            $('#processing').attr("value", false);
        }
    },
    error: function () {

    }
});

为AJAX调用设置async : false

答案 1 :(得分:0)

看一下jquery方法.ajaxComplete()。这是链接ajaxComplete

如果添加async:false,那么它将不会成为ajax调用,它将成为同步调用。但我必须承认这也是一个选择..