Javascript 退出匿名函数。jQuery

Javascript 退出匿名函数。jQuery,javascript,jquery,Javascript,Jquery,我有个问题。我在匿名函数中有以下代码: ... if (fillActyalizerForm(jQuery(this).attr('account_id'), jQuery(this).attr('currency_id')) == false) { return false; } jQuery("#actyalizer").slideToggle("slow"); ... 问题是,即使我返

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

        ...
        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;
            }
        });
函数fillActyalizePerform(帐户id、货币id){
formValues={};
jQuery.ajax({
async:false,
键入:“POST”,
网址:“…”,
数据:“{'accountId':“+account_id+”,'currencyId':“+currency_id+”}”,
数据类型:“json”,
contentType:“应用程序/json;字符集=utf-8”,
成功:功能(数据){
if(data&&data.hasOwnProperty(“d”)){
data=data.d;
}
如果(!data.Error){
formValues=数据;
删除formValues。错误;
}否则{
警报(“”);
返回false;
}
},
错误:函数(数据){
警报(“”);
返回false;
}
});

因此,我成功地获取了警报消息,但它仍然会沿着元素向下滑动。

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

我认为你有两个选择:

  • jQuery(“#actyalizer”).slideToggle(“slow”)
    移动到
    success
    功能中
  • 执行同步ajax请求
  • 我建议选择一。
    这可以通过将函数作为参数传递给
    FillActyalizPerform
    或实际移动代码来实现。

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

    我认为你有两个选择:

  • jQuery(“#actyalizer”).slideToggle(“slow”)
    移动到
    success
    功能中
  • 执行同步ajax请求
  • 我建议选择一。
    这可以通过将您的函数作为参数传递给
    FillActyalizPerform
    或实际移动代码来实现。

    您确定它正在返回吗?要扩展@mindandmedia所说的内容,请检查控制台中
    FillActyalizPerform
    函数引发的错误。@mindandmedia,@Rory McCrossan如何生成子函数return false?我尝试了try-catch,但失败了。你确定它正在返回吗?要进一步说明@mindandmedia所说的内容,请检查控制台中的
    fillactyalizeperform
    函数引起的错误。@mindandmedia,@Rory McCrossan如何使子函数返回false?我尝试了try-catch,但失败了。我想我将使用s秒option@JakeFisher,注意使用同步AJAX调用时的缺点,它会阻塞UI线程!研究它并确保这是您真正想要的。Fourie是的,您对第一个选项的看法是正确的。这更可取。我想我将使用第二个选项option@JakeFisher,请注意使用同步AJAX ca时的缺点lls,它阻止了UI线程!研究它并确保这是您真正想要的。Fourie是的,您对第一个选项的看法是正确的。这更可取。