我有两个函数,我想在第一个函数完成后调用一个函数。

我这样写:

$(document).ready(function () {
        FetchProducts('@Model.ProductId', function () {
            SimilarProducts('@Model.Class.Group.SectionId', '@Model.ProductId', '@TempData["Min"]', '@TempData["Max"]');
        });
    });
FetchProducts函数运行一个ajax调用,该调用将填充TempData["Min"]TempDate["Max"]并返回产品列表。
SimilarProducts希望通过最小和最大另一个ajax请求来获得一些相似的产品。 FetchProducts运行正常,但SimilarProducts未运行。

有什么问题?

更新

这是FetchProducts函数:
function FetchProducts(productId) {
    $.getJSON("/product/jsonproducts", { productId: productId }, function (data) {
        var i = 0;
        $(".section-items-details").empty();
        for (var i = 0; i < data.length; i++) {
            ...
        }
    });
}

这是SimilarProducts函数:
function SimilarProducts(sectionId,productId, minimum, maximum) {
    $.getJSON("/product/getsimilarproducts", { sectionId: sectionId, productId: productId, min: minimum, max: maximum }, function (data) {
        var i = 0;
        for (var i = 0; i < data.length; i++) {
        ...
        }
    });
}

最佳答案

哦,好的,自您更新后,我可以告诉您错误在哪里:)

因此,谈谈您的“FetchProducts”功能:

function FetchProducts(productId) {
$.getJSON("/product/jsonproducts", { productId: productId }, function (data) {
    var i = 0;
    $(".section-items-details").empty();
    for (var i = 0; i < data.length; i++) {
        ...
    }
});

}

如我们所见,您的'FetchProducts'函数仅接受一个参数,但是在他的调用中,您添加了一个匿名函数。

为了使其正常工作,您应该像这样编辑“FetchProducts”函数:
function FetchProducts(productId, callback) {
    $.getJSON("/product/jsonproducts", { productId: productId }, function (data) {
        var i = 0;
        $(".section-items-details").empty();
        for (var i = 0; i < data.length; i++) {
            ...
        }
        ...
        // Everything is ok, let's call our callback function!
        if ($.isFunction(callback)) callback();
    });
}

07-28 07:48