Jquery自动完成-未从functon获取返回值

Jquery自动完成-未从functon获取返回值,jquery,get,return,each,Jquery,Get,Return,Each,我确信我的编码有很多错误 然而,除了自动完成之外,一切都正常 我似乎无法从searchResults函数返回值 我想把绳子还给你 现在 alert("t: " + availableTags); 工作但是 alert("x: " + availableTags); 不 两个返回行都不返回值 我做错了什么 $(function(){ //$("#searchButton").click(function(){ //$("input").keyup(function(e)

我确信我的编码有很多错误

然而,除了自动完成之外,一切都正常

我似乎无法从searchResults函数返回值

我想把绳子还给你

现在

  alert("t: " + availableTags);
工作但是

  alert("x: " + availableTags);

两个返回行都不返回值

我做错了什么

$(function(){
    //$("#searchButton").click(function(){
    //$("input").keyup(function(e){

    var availableCompanies = searchResults('CompanyName',false);
    var availableLocations = searchResults('Location',false);
    $("input[id^='CompanyName']").keyup(function(){ 
        //alert("CN");  
        searchResults('CompanyName',true);          
    });//$("input[id=CompanyName]").keyup(function(e){  
    $("input[id^='Location']").keyup(function(){    
        searchResults('Location',true);         
    }); 
    $("input[id^='serving']").keyup(function(){ 
        searchResults('serving',true);          
    });
    $( "#CompanyName" ).autocomplete({
        source: availableCompanies
    });
    $( "#Location" ).autocomplete({
        source: availableLocations
    });
    alert(availableCompanies);

})//$(function(){})  


function searchResults(which,populate,availableTags){
    //clear search results
    $("#searchResults").text("");
    //clear available tags
    //jqxAlert.alert(which);
    //var sSearch = $("#search").val();
    var sSearch =  $("input[id='"+which+"']").val();
    var url = "search.asp?" + which + "=" + sSearch;
    //alert(url);
    var availableTags = "";

    $.get(url, function(data){
        //$('#searchResults').html(data);
        var uid =""
        var company = ""; 
        var location = "";
        var phone1 = "";
        var phone2 = "";
        var phone3 = "";
        var html = "";
        var sql = "";
        var i = 1;


        if ($('company',data).text() == ""){
            $("#searchResults").html("<tr><td>Sorry, there are no results.</td></tr>");
        };

        $.each($('company',data),function(index, el) {  
            uid = $(this).find('uid').text();
            companyName = $(this).find('CompanyName').text();
            location = $(this).find('location').text();
            //phone1 = $(this).find('phone1').text();
            //phone2 = $(this).find('phone2').text();
            //phone3 = $(this).find('phone3').text();
            //serving = $(this).find('serving').text();
            //sql = "<br />" + $(this).find('sql').text() + "<br />";

            //alert(which == "CompanyName");
            if (which == "CompanyName"){
                //availableTags = availableTags + companyName;
                if (availableTags.indexOf(companyName) < 0){
                    if (availableTags == "") {
                        availableTags = companyName;
                    }else{
                        availableTags = availableTags + "," + companyName;
                    }
                }               
            }
            if (which == "Location"){
                if (availableTags.indexOf(Location) < 0){
                    if (availableTags == "") {
                        availableTags = Location;
                    }else{
                        availableTags = availableTags + "," + Location;
                    }
                }
            }   

            if (sSearch != ""){
                if (i % 2 == 0){
                    html = '<div id="c_' + uid + '" class="bgGrey">';
                }else{
                    html = '<div id="c_' + uid + '" class="bgWhite">';
                }
                html = html + "<tr>";
                html = html + "<td><b>&larr;</b>" + companyName + " (" + location + ")</td>";

                //html = html + company + " " + location ;
                html = html + "</tr>";
                html = html + "</div>";

                //$("#searchResults").append(i + ' ' +x + ' ' + y + ' ' + sql + html);
                $("#searchResults").append(html);
            }
            i++;
        }); //$.each($('company',data),function(index, el) {


        if (populate){
            PopulateFields();       
        }else{
            alert("t: " + availableTags);
            return "test";  
        }

    }).error(function() {
        $("#searchResults").html("<tr><td>Results could not be retrieved. Alert T. McDermott</td></tr>");
    }); //$.get(url, function(data){    
    alert("x: " + availableTags);
    return availableTags;   
}
$(函数(){
//$(“#搜索按钮”)。单击(函数(){
//$(“输入”).keyup(函数(e){
var availableCompanies=searchResults('CompanyName',false);
var availableLocations=搜索结果('Location',false);
$(“输入[id^='CompanyName'])。键控(函数(){
//警报(“CN”);
搜索结果('CompanyName',true);
});//$(“输入[id=CompanyName]”)。键控(函数(e){
$(“输入[id^='Location'])。键控(函数(){
搜索结果('Location',true);
}); 
$(“输入[id^='serving'])。键控(函数(){
搜索结果(“服务”,真实);
});
$(“#公司名称”).autocomplete({
资料来源:可用公司
});
$(“#位置”).autocomplete({
资料来源:现有资料
});
警报(公司可用);
})//$(函数(){})
函数搜索结果(其中,填充,可用标记){
//清除搜索结果
$(“#搜索结果”).text(“”);
//清除可用标记
//jqxAlert.alert(which);
//var sSearch=$(“#搜索”).val();
var sSearch=$(“输入[id=”+which+“]”).val();
var url=“search.asp?”+which+“=”+sSearch;
//警报(url);
var availableTags=“”;
$.get(url、函数(数据){
//$('#searchResults').html(数据);
var uid=“”
var company=“”;
var位置=”;
var phone1=“”;
var phone2=“”;
var phone3=“”;
var html=“”;
var-sql=“”;
var i=1;
如果($('company',data).text()==“”){
$(“#searchResults”).html(“对不起,没有结果。”);
};
$。每个($('company',data),函数(index,el){
uid=$(this.find('uid').text();
companyName=$(this.find('companyName').text();
location=$(this.find('location').text();
//phone1=$(this.find('phone1').text();
//phone2=$(this.find('phone2').text();
//phone3=$(this.find('phone3').text();
//serving=$(this.find('serving').text();
//sql=“
”+$(this.find('sql').text()+”
“; //警报(其中=“公司名称”); if(which==“CompanyName”){ //availableTags=availableTags+公司名称; if(可用标记索引of(公司名称)<0){ 如果(availableTags==“”){ availableTags=公司名称; }否则{ availableTags=availableTags+“,”+公司名称; } } } 如果(哪个==“位置”){ if(可用标记索引(位置)<0){ 如果(availableTags==“”){ 可用标记=位置; }否则{ availableTags=availableTags+“,”+位置; } } } 如果(搜索!=“”){ 如果(i%2==0){ html=''; }否则{ html=''; } html=html+“”; html=html+“&larr;”+companyName+”(“+location+”); //html=html+公司+“”+地点; html=html+“”; html=html+“”; //$(“#搜索结果”).append(i+''+x+''+y+''+sql+html); $(“#搜索结果”).append(html); } i++; })/$。每个($('company',data),函数(索引,el){ 如果(填充){ PopulateFields(); }否则{ 警报(“t:+availableTags”); 返回“测试”; } }).错误(函数(){ $(“#searchResults”).html(“无法检索结果。警报T.McDermott”); });//$.get(url,函数(数据){ 警报(“x:+availableTags); 返回可用的标签; }
您在ajax请求之外返回值
$.get()
中的部分仍在从服务器获取数据。您不能这样操作,因为这是一个异步操作。您有两个主要选项:

  • 使其同步(糟糕,这会锁定大多数浏览器)
  • 通过在完成时调用下一个函数,很好地处理异步行为
  • 您应该做的是调用
    someOtherFunction(availableTags);
    $.get(url,function(data){})
    函数的末尾,在那里它拥有数据并可以将其传递给任何需要的对象


    您看到的是,
    函数(data){}
    在服务器将数据发送回浏览器后执行,然后您可以对其进行处理,因此您希望从那里继续。

    您返回的值在ajax请求之外,因此
    $.get()中的部分
    仍在从服务器获取数据。您不能这样操作,因为这是一个异步操作。您有两个主要选项:

  • 使其同步(糟糕,这会锁定大多数浏览器)
  • 通过在完成时调用下一个函数,很好地处理异步行为
  • 您应该做的是调用
    someOtherFunction(availableTags);
    $.get(url,function(data){})
    函数的末尾,在那里它拥有数据并可以将其传递给任何需要的对象

    您看到的是,一旦服务器将数据发送回浏览器,就会执行
    函数(data){}
    ,然后您就可以进行处理了