代码之家  ›  专栏  ›  技术社区  ›  user2836554

从数据属性动态获取JQuery Ajax请求的URL

  •  1
  • user2836554  · 技术社区  · 11 年前

    我有一个JQuery自动完成函数,我需要能够将url传递到该函数中。我正试图从html数据url属性中提取url,但我目前在JavaScript控制台中得到一个变量is undefined消息,所以我知道我没有得到预期的值。我在下面包含了我的代码。如有任何帮助,我们将不胜感激。

    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 回复  |  直到 11 年前
        1
  •  3
  •   Reinstate Monica Cellio    11 年前

    试试这个。。。

    $(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的元素:)

        2
  •  2
  •   user305584    10 年前

    更改ajax请求中URL的另一种方法

    $.ajax({
      url: "http://static.url/",
      beforeSend: function (xhr) {
        this.url = "http://dyn.url/" + "here"
      }
    });
    
        3
  •  0
  •   Hussein Nazzal    11 年前

    我认为你应该做的是:

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