【问题标题】:AJAX response undefined.AJAX 响应未定义。
【发布时间】:2014-12-30 04:25:55
【问题描述】:

我目前正在创建一个 AJAX 调用,它查询控制器并返回适当的响应。唯一的问题是响应会以未定义的方式返回 AJAX cal 的异步性质。我不确定如何告诉函数等待响应。这是我的代码:

查看:

jQuery(document).on("click", "#payment .membership", function(e) {
        e.preventDefault(); 
        var price = SignUpObject.membershipClick(jQuery(this).attr("data-membership-id"));
        alert(price);
    });

Javascript 库函数(在对象内):

var SignUpObject = {
    membershipClick : function(membershipDetailsId) {           
        jQuery.ajax({
            type      :  'POST',
            dataType  :  'json',            
            url       :  'api/membership-choice',
            data      :  'membershipid=' + membershipDetailsId
        }).done(function(response) {
            return response
        });
    }
}

AJAX 调用所调用的 PHP 返回正确的响应,因此我不需要在此处包含它们。谁能告诉我如何让 AJAX 调用等待响应? 谢谢

【问题讨论】:

标签: ajax promise


【解决方案1】:

你有两个问题:

1) 您正尝试在(异步)请求完成之前同步调用响应。

2) membershipClick 不返回请求对象,因此您无法将完成回调挂钩到它。

修复:

1) 换行

jQuery.ajax({...

return jQuery.ajax({

2) 换行

alert(price);

price.done(function(response) { alert(response); });

但是,变量price 最好命名为price_request,因为它存储对请求的引用,而不是实际价格(即响应)。

【讨论】:

    【解决方案2】:

    改变

    }).done(function(response) {
    return response
    

    });

    为:

    }), success: function(response) {
    return response
    

    };

    【讨论】:

    • 这是不正确的。这不仅是一个语法错误——它完全忽略了根本问题。
    猜你喜欢
    • 2021-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-11
    • 2021-06-21
    相关资源
    最近更新 更多