尝试从 javascript 模块获取返回值

Trying to get a return value from a javascript module

本文关键字:获取 返回值 模块 javascript      更新时间:2023-09-26

我有以下代码:

    $("#search").keyup(function(){
      if($("#search").val().length > 2){
        var returnedValue = (notes.search($("#search").val()));
        console.log(returnedValue);
      }
    });

    notes = (function(){
    return{
        search : function(data){
                var result = "";
                $.ajax({
                    type:"GET",
                    url:"/search",
                    dataType:"text",
                    timeout:2000,
                    data:{noteTitle:data},
                    success:function(data){
                        if(data == 'false'){
                            console.log('no data');
                        }else{
                            result = JSON.parse(data);
                            return(result);
                        }
                    },
                    error:function(xhr,type){
                        console.log("ajax error");
                    }
                });
        },
})();

返回值始终未定义。 这显然是一个范围问题,但我似乎无法弄清楚如何将数据从 ajax 请求返回到模块之外的任何内容。

data 变量被覆盖。

更正的代码:

$("#search").keyup(function(){
  if($("#search").val().length > 2){
    var returnedValue = (notes.search($("#search").val()));
    console.log(returnedValue);
  }
});

notes = (function(){
return{
    search : function(str){
            var result = "";
            $.ajax({
                type:"GET",
                url:"/search",
                dataType:"text",
                timeout:2000,
                data:{noteTitle:str},
                success:function(msg){
                    if(msg== 'false'){
                        console.log('no data');
                    }else{
                        result = JSON.parse(msg);
                        return(result);
                    }
                },
                error:function(xhr,type){
                    console.log("ajax error");
                }
            });
    },
})();