【问题标题】:jquery autocomplete - save data to DB when list item is clicked (select event)jquery自动完成 - 单击列表项时将数据保存到数据库(选择事件)
【发布时间】:2014-04-24 02:25:52
【问题描述】:

我已经阅读了很多关于 jq 自动完成的内容,但似乎在触发 select 事件时无法发出 ajax 请求。 仅当单击元素时,我才会将搜索查询写入 DB-Table。

Firebug 将 url 显示为红色GET http://server.ccc/api/my/logSearchQuery?a=searchquery&b=11&v=0

$(document).ready(function(e){
    var results = [];
    var _request = null;
    $("#input").autocomplete({
        source: function( request, response ) {
            _request = request;
            $.ajax({
                  url: "http://dataserver",
                  dataType: "jsonp",
                  jsonp: 'json.wrf',
                  data: {
                q: GenerateSearchQuery(request.term)
                  },
                  success: function( data ) {

                    results = $.map(data.response.docs, function(item) {
                    return {
                          label: item.Name,
                          value: {
                              id:cid
                          }
                        };
                    });
                response(results);
                  }
            });
        },
        minLength: 3,
        select: function( event, ui ) {
            event.preventDefault();
            // ---------------- here is what i've tried, but it fails----------------------
            $.ajax({
                  url: "api/my/logSearchQuery",
                  type: "get",
                  dataType: "json",
                  contentType: "application/json; charset=utf-8",
                  data: {"a": encodeURIComponent(_request.term), "b": results.length, "v": 0},
                  success: function(data){
                      console.log(data);
                  },
                  error: function(XMLHttpRequest, textStatus, errorThrown) {
                      console.log(XMLHttpRequest+ " : "+ errorThrown + " : " + textStatus);
                    }
            });

            if (ui.item.value != "searchAll") {
                self.location = "/list/"+ui.item.value.id;
            } else {
                $('#searchForm').submit();
            }
        }
    });});

Ajax 调用适用于源事件,但我认为这不是正确的地方。 ajax 错误为空。

请帮忙。

【问题讨论】:

  • 服务器脚本是否启用以接受jsonp 请求或crossdomain 请求?
  • @dreamweiver 源事件中的ajax call 工作正常,所以我认为crossdomain 被接受。但是问题是选择事件中的第二个 ajax 调用

标签: javascript jquery ajax database jquery-autocomplete


【解决方案1】:

是的,我是初学者;-)

问题是,ajax 调用下的代码...

select: function( event, ui ) {
        event.preventDefault();
        // ---------------- here is what i've tried, but it fails----------------------
        $.ajax({
            url: "api/my/logSearchQuery",
            type: "get",
            dataType: "json",
            contentType: "application/json; charset=utf-8",
           data: {"a": encodeURIComponent(_request.term), "b": results.length, "v": 0},
              success: function(data){
                  console.log(data);
              },
              error: function(XMLHttpRequest, textStatus, errorThrown) {
                  console.log(XMLHttpRequest+ " : "+ errorThrown + " : " + textStatus);
                }
        });
  //----------this part--------------- 
        if (ui.item.value != "searchAll") {
            self.location = "/list/"+ui.item.value.id;
        } else {
            $('#searchForm').submit();
        }
    } 

在 ajax 调用工作期间被触发(异步)。

所以我把这部分放到$.ajaxcomplete:事件中

complete: function(xhr, status){
 if (ui.item.value != "searchAll") {
   self.location =   "/some    /"+ui.item.value.pflnr;
} else {
   $('#seachBar_searchForm').submit();
}
 }

现在可以正常使用了。

【讨论】:

  • 很高兴知道你自己解决了,现在让我们通过自我回答来结束这个问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-05-11
  • 2019-01-05
  • 2011-12-05
  • 2014-11-19
  • 2020-05-22
  • 2012-08-11
  • 1970-01-01
相关资源
最近更新 更多