2014-07-21 2 views
-1

제발 도와주세요; 다음 코드는 자동 완성을 실행하지 않습니다.jquery 자동 완성이 호출되지 않음

$(document).ready(function() { 
    $('div.chapter a[href*="wikipedia"]').attr({ 
     rel: 'external', 
     title: function() { 
      return 'Learn more about ' + $(this).text() 
      + ' at Wikipedia.'; 
     }, 
     id: function (index, oldValue) { 
      return 'wikilink-' + index; 
     } 
    }); 

    $('<a href="#top">back to top</a>').insertAfter('div.chapter p'); 
    $('<a id="top"></a>').prependTo('body'); 

    $('#shakeButton').button({ 
     icons: { primary: 'ui-icon-pause' } 
    }); 

    $('#shakeButton').click(function() { 

     $('#shakeButton').effect('shake', { 
      distance: 5, 
      duration: 100 
     }); 


    }); 

    $('#nameText').autocomplete({ 
     source: GetNames() 
     //,minLength: 3 
    }); 
}); 


function GetNames() { 

    var availableTags = []; 

    var params = { 
     term: $('#nameText').val() 
    }; 

    var request = $.ajax({ 
     url: "/Home/Autocomplete", 
     type: "GET", 
     contentType: "application/json", 
     data: JSON.stringify(params) 
    }); 

    request.done(function (data) { 
     availableTags = data 
     return availableTags; 
    }); 


    //var availableTags = [ 
    // "ActionScript", 
    // "AppleScript", 
    // "Asp", 
    // "BASIC", 
    // "C", 
    // "C++", 
    // "Clojure", 
    // "COBOL", 
    // "ColdFusion", 
    // "Erlang", 
    // "Fortran", 
    // "Groovy", 
    // "Haskell", 
    // "Java", 
    // "JavaScript", 
    // "Lisp", 
    // "Perl", 
    // "PHP", 
    // "Python", 
    // "Ruby", 
    // "Scala", 
    // "Scheme" 
    //]; 
    //return availableTags; 

} 
+0

console.log (데이터)를 사용하여 유효한 JSON을 반환하고 있는지 확인할 수 있습니까? –

답변

0

GetNames() 메서드는 아무 것도 반환하지 않습니다. RemoteRemote JSONP는 (소스보기를 클릭)

function GetNames() { 

    // The function within request.done will be called when the request 
    // is finished 
    request.done(function (data) { 
     availableTags = data 
     return availableTags; 
    }); 

    // But code-execution will go immediately to this position and exit 
    // the function GetNames() without a return-value 

} 

JQuery와 UI-의 매뉴얼 JSON 데이터를 페치하는 방법 두 가지 예를 갖는다.

$("#nameText").autocomplete({ 
    source: "/Home/Autocomplete", 
}); 
0

당신은 당신이 당신의 코드가 작동 할 것으로 예상하는 방법을 설명하지 않은, 그래서 나는 단지 여기 추측하고있어 :

함수 GetNames()가하고 아약스 요청 /Home/Autocomplete과는 졌을 경우에 가능한 태그를 반환해야 결과.

귀하의 문제는 다음과 같습니다

function GetNames() { 
    // ... 
    request.done(function (data) { 
     availableTags = data 
     return availableTags; // you're returning availableTags here 
    }); 
    // You're expecting to get availableTags returned here 
    // but nothing (undefined) is returned 
} 

그 AJAX는 (비동기 자바 스크립트와 XML)를 작동하는 방법이기 때문에 이것은 일반적인 함수 반환 방법으로 수행 할 수 없습니다

가능한 솔루션 :

$('#nameText').autocomplete({ 
    source: function (request, response) { 
     $.ajax({ 
      url: "/Home/Autocomplete", 
      dataType: "jsonp", 
      data: { 
       q: request.term 
      }, 
      success: function (data) { 
       response(data); 
      } 
     }); 
    }, 
    // ... 
}); 

이 예는 Autocomplete documentation에서 복사됩니다. 어쩌면 다음 번에, 당신은 여기에 묻기 전에 참조하기 위해 문서를 확인해야 할 것입니다. 아마 당신의 답을 더 빨리 얻을 수있을 것입니다. 이것은 모든 라이브러리/프레임 워크에 적용됩니다.

관련 문제