退出匿名函数。 jQuery的

时间:2012-02-25 11:02:09

标签: javascript jquery

我有问题。我在匿名函数中有以下代码:

        ...
        if (fillActyalizerForm(jQuery(this).attr('account_id'), jQuery(this).attr('currency_id')) == false) {
            return false;
        }
        jQuery("#actyalizer").slideToggle("slow");
        ...

问题是即使我返回false,元素也会向下滑动。

function fillActyalizerForm(account_id, currency_id) {
    formValues = {};
        jQuery.ajax({
            async: false,
            type: 'POST',
            url: "..",
            data: "{'accountId':" + account_id + ",'currencyId':" + currency_id + "}",
            dataType: "json",
            contentType: "application/json; charset=utf-8",
            success: function (data) {
                if (data && data.hasOwnProperty("d")) {
                    data = data.d;
                }
                if (!data.Error) {
                    formValues = data;
                    delete formValues.Error;
                } else {
                    alert('<%=Resources.app.Actyalizer_AcLoadFail %>');
                    return false;
                }
            },
            error: function (data) {
                alert('<%=Resources.app.Actyalizer_AcLoadFail %>');
                return false;
            }
        });

所以我成功收到警告信息,但它仍然向下滑动了elemtn。

1 个答案:

答案 0 :(得分:1)

问题是fillActyalizerForm函数执行异步.ajax方法,然后返回而不指定返回值(默认返回值为false)。

我认为你有两个选择:

  1. jQuery("#actyalizer").slideToggle("slow");移至success功能。
  2. 执行同步ajax请求。
  3. 我会推荐选项一。 这可以通过将函数作为参数传递给fillActyalizerForm或物理移动代码来实现。