2010-12-15 2 views
3

마스터 페이지가있는 ASP.net 웹 응용 프로그램이 있습니다. 내 마스터 페이지의 메뉴 막대에는 사용자가 쿼리를 입력하고 버튼을 클릭하는 검색 기능이 있습니다. 버튼을 클릭하면 사용자의 브라우저가 검색 결과를 보여주는 페이지로 이동합니다. 이 funcitonality는 잘 작동합니다.jQuery AJAX를 ASP.net 마스터 페이지에서 사용하는 방법은 무엇입니까?

그러나 jQuery AJAX와 jQuery Autocomplete를 사용하여 프로그램을 더 쉽게 사용할 수 있도록 결정했습니다. 검색은 http://example.com/page1.aspx과 에서 제대로 작동하지만 http://example.com/subdirectory/index.aspx에서 작동하지 않습니다. (마스터 페이지에서)

function setupSerialNumberAutocomplete(id) { 
    $(id).autocomplete({ 
     source: function(request, response) { 
      $.ajax({ 
       url: "DeviceSelection.aspx/getDeviceFieldAutocomplete", 
       data: "{ 'text': '" + escape(request.term) + "', 'field': 'SerialNumber' }", 
       dataType: "json", 
       type: "POST", 
       contentType: "application/json", 
       dataFilter: function(data) { return data; }, 
       success: function(data) { 
        response($.map(data.d, function(item) { 
         return { 
          value: item 
         } 
        })) 
       }, 
       error: function(xhr, status) { 
        var exception = eval("(" + xhr.responseText + ")"); 
        $("#divStatus").html("Error fetching registration codes list: " + xhr.statusText + " - " + exception.Message + "."); 
       } 
      }); //end - ajax 
     }, 
     minLength: 2, 
     focus: function(event, ui) { 
      $(id).val(ui.item.value); 
      return false; 
     }, 
     select: function(event, ui) { 
      $(id).val(ui.item.value); 
      return false; 
     } 
    }); 

그것은 DeviceSelection.aspx/getDeviceFieldAutocomplete, 내 ASP.net 코드에서 웹 서비스 호출에 jQuery를 AJAX 호출입니다 :

은 여기에 자동 완성 기능을 수행 할 수 내 자바 스크립트 코드입니다. DeviceSelection.aspx는 http://example.com/DeviceSelection.aspx에 위치하므로 사용자가 http://example.com/subdirectory/index.aspx에 액세스하여 쿼리에 입력 할 때 http://example.com/subdirectory/DeviceSelection.aspx에서 웹 서비스를 호출하려고합니다.

어떻게하면됩니까? 이것에

답변

2

가상 디렉터리에 상대적인 것을 얻을 수 있습니까?

URL 코드에 <%= Request.ApplicationPath %>을 입력하고 절대 경로를 입력하면 어떨까요? 마찬가지로 클라이언트 해결자를 사용하여 경로를 확인할 수도 있습니다 (정확한 구문은 잊어 버렸지 만 그곳에 있습니다)

+0

고맙습니다. 이것은 내 프로젝트에서 효과가 있었다. –

+0

@RiceFlourCookies ~ 너무 열심히 노력하면 종종 해로운 일임을 기억하십시오. – jcolebrand

4

변경을 :

... 
$.ajax({ 
    url: "/DeviceSelection.aspx/getDeviceFieldAutocomplete", 
    data: "{ 'text': '" + escape(request.term) + "', 'field': 'SerialNumber' }", 
    dataType: "json", 
... 

은 "/"가 앞에있는 URL은 도메인 (보다는 현재 페이지를 기준)을 기준으로 말한다.

+0

예를 들어 http://example.com을 사용했습니다. 페이지가 http://example.com/mydirectory/DeviceSelection.aspx에 있다면 어떻게 될까요? 가상 디렉터리와 관련하여 뭔가를 얻을 수 있습니까? –

관련 문제