第二个函数没有在jquery中运行

时间:2015-09-27 05:36:59

标签: javascript jquery ajax

我有两个功能,我希望在完成第一个功能后调用一个功能。

我写了这个:

$(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想要通过min和max制作另一个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++) {
        ...
        }
    });
}

2 个答案:

答案 0 :(得分:6)

哦,好了,因为你的更新我可以告诉你哪里出错:)

所以,谈谈你的'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();
    });
}

答案 1 :(得分:2)

为什么您认为FetchProducts会致电SimularProductionFetchProducts对第二个参数没有任何作用。

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

}