2013-06-10 4 views
0

아약스 메소드를 몇 군데 호출해야합니다. 따라서 별도의 메소드를 작성하여 코드를 최소화하려고합니다. 직접 사용하면 완벽하게 작동합니다. 하지만 분리하면 작동하지 않습니다.자바 스크립트에서 메소드를 호출하지만 오류가 발생합니다.

data: columns[5], 
    type: 'autocomplete', 
    options: { items: 100 }, 
    source: function (query, process) {  
      $.ajax({ 
      url: "/EditInitiatives.svc/GetLocationData?clientId=" + $value.val(), 
      type: "GET", 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      data: { 
         query: query 
        }, 
      success: function (response) { 
         process(response.d); 
        } 
      }); 
      }, 
      strict: true 
} 

이렇게 호출하면 작동하지 않습니다. 그것은 Microsoft JScript runtime error: 'query' is undefined, 어떻게 고칠 말합니다?

{ 
    data: columns[4], 
    type: 'autocomplete', 
    options: { items: 100 }, 
    source: callAutoCompleteAjaxMethod(query, process, "/EditInitiatives.svc/GetLocationData?clientId=" + $value.val()), 
    strict: true 

}, 

callAutoCompleteAjaxMethod = function (query, process, url) { 
       $.ajax({ 
        url:url, 
        type: "GET", 
        contentType: "application/json; charset=utf-8", 
        dataType: "json", 
        data: { 
         query: query 
        }, 
        success: function (response) { 
         process(response.d); 
        } 
       }); 
      }, 
+2

오류의 어느 부분을 이해하지 못합니까? – SLaks

답변

1

이 함수를 source 속성에 할당하는 대신 호출하는 것입니다. 그리고이 순간에 변수 query은 정의되지 않았습니다.

source: function (query, process) { 
    callAutoCompleteAjaxMethod(
     query, 
     process, 
     "/EditInitiatives.svc/GetLocationData?clientId=" + $value.val() 
    ); 
} 

함수 참조 후 (())

괄호 (어디 선가 정의 $value 희망)은 항상를 호출

당신은 플러그인 나중에 호출 할 수 있도록 기능을 할당해야 즉시 작동합니다. 함수에 대한 참조를 전달하려면 그 뒤에 괄호를 넣지 마십시오.

2

당신은

source: callAutoCompleteAjaxMethod(query, ... 

를 호출하지만 당신은 '쿼리'값이, 그것을 값을 제공하고 작동합니다 포기하지 않았다.

관련 문제