你如何使用POST与jQuery Autocompleter?

时间:2009-07-11 16:26:06

标签: jquery json post autocomplete

jQuery v1.2.6

jQuery.autocompleter插件v1.1pre(来自jQuery的网站)

我无法使用'type:“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()委托执行此操作。

我真的希望上面的代码能帮助其他人在未来找出自动完成程序。如果有,请给我一个投票。

提示:属性名称data [i] .Data和data [i] .Name是JSON属性名称。

2 个答案:

答案 0 :(得分:2)

此时(Autocompleter 1.1pre),没有办法在不更改插件代码的情况下发布它。

我刚刚离开它提交查询字符​​串。谢谢大家的回答,我提高了投票率。

答案 1 :(得分:1)

您可以将''all''jquery ajax调用的默认值设置为post,然后在您想要的任何脚本中覆盖它们。覆盖也可能适用于此...尝试将其放在代码的顶部:

$.ajaxSetup({
    type: 'POST'
});

您可以使用$.ajaxSetup()调用为任何常规$.ajax / $.post / $.get选项设置默认值。我希望有所帮助。