0

我有以下代码:

    $("#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 请求中的数据返回到模块外的任何内容。

4

1 回答 1

0

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");
                }
            });
    },

})();
于 2013-10-01T22:08:05.123 回答