【发布时间】: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