2013-10-03 44 views
1

我有一個JQuery的自動完成功能,我需要能夠到URL進入。我試圖從html data-url屬性中拉出url,但是我目前在JavaScript控制檯中得到了一個未定義的變量,所以我知道我沒有得到我期望的值。我已經在下面包含了我的代碼。任何幫助將不勝感激。動態獲取URL從數據JQuery的Ajax請求屬性

jQuery函數:

$(function() { 
    $(".autocomplete").autocomplete({ 
     delay: 0, 
     source: function (request, response) { 
      var baseURL = $(this).data("url"); 
      $.ajax({ 
       type: "GET", 
       contentType: "application/json; charset=utf-8", 
       url: baseURL + request.term, 
       dataType: "json", 
       success: function (data) { 
        response(data) 
       } 
      }); 
     }, 
     minLength: 1, 
    }); 

HTML元素:

<td style="width: 90%"> 
    <label for="tag_Name" class="inline">Server Tags: </label> 
     <input class="fixed autocomplete" type="text" id="tag_Name" placeholder="Type tags to add..." data-url="/RequestFieldValues/GetLikeResourceTags/?prefix=" /> 
</td> 

回答

3

試試這個...

$(function() { 
    $(".autocomplete").each(function() { 
     var baseURL = $(this).data("url"); 
     $(this).autocomplete({ 
      delay: 0, 
      source: function (request, response) { 
       $.ajax({ 
        type: "GET", 
        contentType: "application/json; charset=utf-8", 
        url: baseURL + request.term, 
        dataType: "json", 
        success: function (data) { 
         response(data) 
        } 
       }); 
      }, 
      minLength: 1, 
     }); 
    }); 
}); 

我已經把.autocomplete()each()函數中這樣你就可以請參考this從數據屬性中獲取基礎URL即然後你可以將它傳遞給source函數。

順便說一句,如果有多個輸入,那麼你需要讓每個輸入都有一個唯一的ID。你不應該有相同的ID :)

+0

仍然來了即使用引號也未定義。 – user2836554

+0

試試吧,讓我們知道你是如何得到的。 – Archer

+0

完美謝謝! – user2836554

0

元素,我認爲你應該做的是:

$(function() { 
var baseURL = $(".autocomplete").data('url'); 
    $(".autocomplete").autocomplete({ 
     delay: 0, 
     source: function (request, response) { 
      $.ajax({ 
       type: "GET", 
       contentType: "application/json; charset=utf-8", 
       url: baseURL + request.term, 
       dataType: "json", 
       success: function (data) { 
        response(data) 
       } 
      }); 
     }, 
     minLength: 1, 
    }); 
+0

有「.autocomplete」類的不止一個元素,所以我不認爲它也可以。我需要從提出請求的.autocomplete類中獲取URL,這就是爲什麼我試圖使用$(this)引用 – user2836554

1

另一種方式來改變URL的Ajax請求

$.ajax({ 
    url: "http://static.url/", 
    beforeSend: function (xhr) { 
    this.url = "http://dyn.url/" + "here" 
    } 
});