1

我有一个 JQuery 自动完成功能,我需要能够将 url 传递到。我正在尝试从 html data-url 属性中提取 url,但是我目前在 JavaScript 控制台中收到一个 variable 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>
4

3 回答 3

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函数。

顺便说一句,如果有超过 1 个输入,那么您需要让每个输入都有一个唯一的 ID。您不应该有具有相同 ID 的元素 :)

于 2013-10-03T22:48:21.587 回答
2

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

$.ajax({
  url: "http://static.url/",
  beforeSend: function (xhr) {
    this.url = "http://dyn.url/" + "here"
  }
});
于 2014-11-04T22:00:45.520 回答
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,
    });
于 2013-10-03T22:50:11.110 回答