簡體   English   中英

從數據屬性動態獲取JQuery Ajax請求的URL

[英]Dynamically get URL for JQuery Ajax request from Data Attribute

我有一個JQuery自動完成功能,我需要能夠將url傳遞給它。 我正在嘗試從html data-url屬性中提取url,但是我目前在JavaScript控制台中得到的變量是未定義消息,所以我知道我沒有得到我期望的值。 我在下面包含了我的代碼。 任何幫助將不勝感激。

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>

試試這個...

$(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以從data屬性獲取基本URL。 然后,您可以將其傳遞給source函數。

順便說一句,如果輸入多於1個,則需要使每個輸入都有唯一的ID。 您不應該使用具有相同ID的元素:)

在ajax請求中更改URL的另一種方法

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

我認為您應該做的是:

 $(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,
    });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM