2013-05-14 65 views
0

我想从通过AJAX调用的Web服务文件中获取用户数据列表。这里是我的代码:我的jquery显示这个错误?

 <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css" /> 
    <script src="http://code.jquery.com/jquery-1.9.1.js"></script> 
    <script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script> 

<script type="text/javascript"> 
    var param; 
    var resultarr; 

    $(document).ready(function() {  
     param = document.getElementById('MainCT_dtvJobVac_PIC').value; 
     // Load countries then initialize plugin: 
     $.ajax({ 
      type: 'POST', 
      contentType: 'application/json;', 
      data: '{keyword:' + JSON.stringify(param) + '}', 
      dataType: 'json', 
      url: 'SvcADUser.asmx/GetADUserList', 
      success: function (result) { 
       //alert(result.d) 
       resultarr = result.d; 
      } 
     }) 

     // Initialize autocomplete with local lookup: 

     $('#MainCT_dtvJobVac_PIC').autocomplete({     
      source: resultarr 
     }); 
    }); 
</script> 

resultarr将输出数组与此值:

[ "Administrator", "Guest", "krbtgt", "phendy" , "Genin" , "Hendra" , "andri" ] 

它抛出这个:

TypeError: this.source is not a function [Break On This Error] this.source({ term: value }, this._response());

什么我需要在这里解决?我在这挣了2天,有些帮助将不胜感激。

+2

这是一个不好的标题示例。请阅读http://meta.stackexchange.com/questions/10647/how-do-i-write-a-good-title – 2013-05-14 12:28:45

+0

“它扔我这个错误:'this.source({term:value},this。 _response());'“嗯,这不是一个错误。 – tnw 2013-05-14 12:30:10

+0

TypeError:this.source不是函数 [Break On This Error] \t this.source({term:value},this._response()); – NomNomNom 2013-05-14 12:31:16

回答

4

移动自动完成初始化了ajax成功回调中:

success: function (result) { 
    //alert(result.d) 
    resultarr = result.d; 
    $('#MainCT_dtvJobVac_PIC').autocomplete({ 
     source: resultarr 
    }); 
} 
+0

嗨,谢谢你的工作。再次非常感谢。 – NomNomNom 2013-05-14 12:34:52

+0

不客气。自动完成之前使用未定义的源参数进行初始化。 – 2013-05-14 12:35:31

0

Ajax调用是异步的。让我们看你的代码:

$.ajax({ .... }); // (1) 

$('#MainCT_dtvJobVac_PIC').autocomplete({ ... }) // (2) 

自动完成初始化(2)调用服务(1)后发生,但它是不明的,如果AJAX请求成功,返回响应。很有可能您正在使用空数据或未定义的数据初始化自动填充 - 当连接速度很慢或出于某种原因失败时,成功回调可能无法在设置自动填充(2)时执行。这样做的正确方法是初始化AJAX回调中的自动完成,因为那么响应数据将保证存在:

$.ajax({ 
    type: 'POST', 
    contentType: 'application/json;', 
    data: '{keyword:' + JSON.stringify(param) + '}', 
    dataType: 'json', 
    url: 'SvcADUser.asmx/GetADUserList', 
    success: function (result) { 
     resultarr = result.d; 

     $('#MainCT_dtvJobVac_PIC').autocomplete({     
      source: resultarr 
     }); 
    } 
}) 
+0

谢谢你的解释,它让我对ajax有更多的理解,很多thanx。 – NomNomNom 2013-05-14 12:47:56