【问题标题】:How do you use POST with jQuery Autocompleter?您如何将 POST 与 jQuery Autocompleter 一起使用?
【发布时间】:2009-07-11 16:26:06
【问题描述】:

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 属性名。

【问题讨论】:

    标签: jquery json post autocomplete


    【解决方案1】:

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

    我只是暂时离开它提交查询字符​​串。谢谢大家的回答,我投了赞成票。

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

      • 我将在本周晚些时候重新开始该任务时尝试此操作(因为它正在工作,目前使用 GET)。我会告诉你的。
      • 它没有用。自动完成器将包含在更高版本的 jQuery 中,他们谈论改变内部工作方式。希望支持 AJAX。我只是改为使用查询字符串。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多