调用用户定义的jQuery函数

时间:2014-02-04 08:50:48

标签: javascript php jquery html ajax

我是一个javascript新手,我试图以这种方式调用jQuery函数:

function getProducts(){
      $.post("products.php",
      {
        customer_ID:$("#customers").val()
      },
      function(data,status){
        return status && data !== "";
      });
};

$(document).ready(function(){
    $("#customers").change(function(){
        if(getProducts){
            alert("trovato");

            $("#products").prop("disabled", false);
            $("#products").html(data);
        }else{
            alert("non trovato");

            $("#products").empty();
            $("#products").prop("disabled", true);
        }
    });
});

虽然函数getProducts正常工作,但ready中的if-else语句不起作用。我想,问题出在函数调用中。这有什么不对吗?谢谢。

2 个答案:

答案 0 :(得分:0)

您需要使用回调包装响应,如下所示:

function getProducts(callback){
      $.post("products.php",
      {
        customer_ID:$("#customers").val()
      },
      function(data,status){
         callback(status && data !== "");
      });
};

$(document).ready(function(){
    $("#customers").change(function(){
        getProducts(function(status) {
           if(status){
             alert("trovato");

             $("#products").prop("disabled", false);
             $("#products").html(data);
           }else{
             alert("non trovato");

             $("#products").empty();
             $("#products").prop("disabled", true);
           }
        });

    });
});

答案 1 :(得分:-1)

由于函数内部的异步调用,我不太确定这是否可行。

显而易见的错误是你必须调用这样的函数:function()。你忘记了括号。

如果在修复之后它不起作用,则必须重新编写程序以使用具有异步调用的回调。