jQuery v1.2.6
jQuery.autocompleter 插件 v1.1pre(来自 jQuery 网站)
我无法使用“类型:“POST””提交回我的网络服务。我无法让它被自动完成程序识别。想法?
只要我查找“q”查询字符串,下面的代码就可以正常工作。但是,我想通过传递更多参数来在将来使用它来实现更高级的功能,并且希望了解如何使用自动完成器回发。
我知道 extraParams 选项。但是,这些是通过 GET 或 POST 提交的额外参数(如果我们可以使 POST 工作)。它不会将其更改为以 POST 形式提交。
$(function() {
$('#searchBox').autocomplete(
"/services/college.asmx/lookupColleges",
{
delay: 5,
minChars: 1,
matchSubset: 1,
matchContains: 1,
cacheLength: 10,
autoFill: false,
dataType: 'json',
parse: function(data) {
var rows = new Array();
for (var i = 0; i < data.length; i++) {
rows[i] = {
data: data[i]
, value: data[i].Data
, result: data[i].Name
};
}
return rows;
},
formatItem: function(row, i, n) {
return row.Name;
}
}).result(function(event, row) {
processSelection(this, row.Data);
});
});
我尝试添加 POST 选项,如下面的代码示例中所述。但它仍然以 GET 形式提交。
delay: 5,
minChars: 1,
matchSubset: 1,
matchContains: 1,
cacheLength: 10,
autoFill: false,
dataType: 'json',
type: 'POST',
感谢任何帮助。
谢谢!
PS,其中很多内容都没有记录,是一个需要经过反复试验才能弄清楚的 PITA。感谢上帝,有 Firebug。
你会注意到我是:
- 从网络服务接收 JSON 返回
- 自动完成功能无法原生处理 JSON,因此我必须将其解析为我自己的数组。
- 由于我现在要传回自定义数组对象,因此需要覆盖 formatItem,以便处理新的数组对象以进行显示。
- 最后是金钱,我想在用户选择一行(单击鼠标或 TAB 或 ENTER 键)后处理该行上的额外数据。我使用 result() 委托(delegate)来执行此操作。
我真的希望上面的代码可以帮助其他人将来弄清楚自动完成器以及所有需要逆向工程的内容。
提示:属性名称 data[i].Data 和 data[i].Name 是 JSON 属性名称。
最佳答案
目前(自动完成器 1.1pre),没有办法在不更改插件代码的情况下发布它。
我现在只是让它提交查询字符串。谢谢大家的回答,我投票了。
关于jquery - 如何将 POST 与 jQuery 自动完成结合使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1114056/