尝试回叫功能时,我做错了什么

时间:2018-01-18 01:18:27

标签: javascript

我正在尝试在javascript中使用此函数的回调函数

function Filtering_GetSite(siteElement) {

$.ajax({

    type: "POST",
    url: "samle.asmx/f1",
    data: "",
    contentType: "application/json; charset=utf-8",
    dataType: "json",

    success: function (response) {

        var filtersitedetails = response.d;
        var appendItem = "";

        $(siteElement).empty();

        $.each(filtersitedetails, function (index, Filtering_GetSiteInfo) {

            var activeappend = "";
            var id = Filtering_GetSiteInfo.id;
            var site = Filtering_GetSiteInfo.site;

            activeappend = "<option value=" + id + ">" + site + "</option>";

            appendItem += activeappend;

        });

        $(siteElement).prepend('<option disabled="disabled" selected="selected" value="">Select Site</option>');
        $(siteElement).append(appendItem);

    },

    error: function (response) {
        alert("error in Filtering_GetSite");
    }
});
}

这就是我调用函数并尝试使用回调函数的方法

Filtering_GetSite("#txt-site-name", function () {
           alert('ok')
           Dashboard_GetAgentInfo(agentParam,agentElement);
       });

但问题是它在功能完成时没有进入警报状态。我怎么能这样做?

3 个答案:

答案 0 :(得分:2)

这是因为当ajax成功调用时,您似乎没有传递并调用该方法。

首先,您必须更改Filtering_GetSite的方法签名以接受第二个参数,在这种情况下是callback,然后当ajax成功时您只需调用它

function Filtering_GetSite(siteElement, callback) {
   ...

   success: function() {
      ....

      callback();
   }

   ...
}

答案 1 :(得分:1)

您尚未将回调参数设置为Filtering_GetSite功能。 e.g。

function Filtering_GetSite(siteElement, callback) {
}

然后,您可以使用callback()来触发回调。例如,在success块内;

答案 2 :(得分:0)

这是一个包装。

您需要为回调函数

指定第二个参数

我还添加了一个条件,所以当你省略第二个参数时,它会检查callback是否有函数,所以你可以调用Filtering_GetSite(sample) Filtering_GetSite(sample,function(){}) function Filtering_GetSite(siteElement, callback) { if (typeof (callBack) == "function") { callBack(); } } < / p>

MySQL 5.7.5 and Before 

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('root!@#');

5.7.6 and Later

ALTER USER 'root'@'localhost' IDENTIFIED BY 'root!@#';