2010-12-15 57 views
3

我有一个ASP.net Web应用程序与母版页。在我的主页面的菜单栏中,有一个搜索功能,用户输入查询并点击一个按钮。点击该按钮后,用户的浏览器将导航到显示搜索结果的页面。这种功能很好。如何在ASP.net母版页中使用jQuery AJAX?

但是,我决定使用jQuery AJAX和jQuery Autocomplete使程序更易于使用。搜索从http://example.com/page1.aspx和正常工作,但它不起作用从http://example.com/subdirectory/index.aspx

这里是我的javascript代码来执行自动完成:(从母版页)

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; 
     } 
    }); 

这是一个jQuery AJAX调用DeviceSelection.aspx/getDeviceFieldAutocomplete,在我的ASP.net代码Web服务调用。 DeviceSelection.aspx位于http://example.com/DeviceSelection.aspx,所以我推测问题在于当用户访问http://example.com/subdirectory/index.aspx和查询中的类型时,它会尝试调用http://example.com/subdirectory/DeviceSelection.aspx的Web服务。

我该如何做这项工作?

回答

2

我们可以得到相对于虚拟目录的东西吗?

那么如果你在<%= Request.ApplicationPath %>的URL代码中提供了绝对路径呢?同样,您可以使用客户端解析器解析路径(我忘记了确切的语法,但它在那里)

+0

谢谢。这对我的项目有效。 – 2010-12-16 17:04:54

+0

@RiceFlourCookies〜请记住,努力过度往往是有害的。 – jcolebrand 2010-12-16 17:05:41

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,该怎么办?我们可以得到相对于虚拟目录的东西吗? – 2010-12-15 22:22:01