【问题标题】:jQuery UI Autocomplete: How can I pass additional data with my Ajax call?jQuery UI 自动完成:如何通过 Ajax 调用传递其他数据?
【发布时间】:2011-12-19 09:17:35
【问题描述】:

我设置了两个 jQuery UI Autocomplete 小部件。在第一次自动完成时,用户将输入客户的名称 - 自动完成将缩小范围,直到选择了正确的客户。然后我有一个回调,它获取返回的客户端 ID 并将其放入隐藏的输入字段中。

接下来是第二个自动完成字段。 在搜索时,这需要向服务器发送两个变量 - 用户的搜索字符串(term),以及之前搜索过的客户端的用户 ID。

我在处理服务器端的事情时没有问题,但我正在努力的是如何将 2 个变量传递给 Ajax 调用,而不仅仅是 term。在我的 PHP 后端,我还需要查询用户 ID,只返回属于该用户的属性。

我该怎么做?

谢谢!

编辑:感谢@JohnP,这就是我最终的结果 - 对我来说似乎工作正常。在这里发布此内容以供将来路过的任何人参考:

source: function (request, response) {

    var request_data = {
        term: request.term,
        client_id: $('input#client_id_string').val()
    };

    var url = 'http://mysite.com/search/ajax_search';

    $.getJSON(url, request_data, function (data, status, xhr) {
         response(data);
    });
},

【问题讨论】:

    标签: javascript jquery ajax jquery-ui autocomplete


    【解决方案1】:

    如果source 是静态方法,您可以覆盖它。

    //code
    source: function (request, response) {
        var term = request.term;
         //caching if yo uwant
         var myCustomVar = 42;
    
         $.getJSON(url + term + '/' + myCustomVar , request, function (data, status, xhr) {
              response(data);
         });
    },
    //code
    

    如果需要,您可以将其作为 URL 的一部分,也可以将其与请求一起传递。

    【讨论】:

    • 谢谢 - 我认为这是正确的方法。但是我在运行它时看到了这个错误:Uncaught ReferenceError: _ac is not defined - 有什么想法吗?谢谢!
    • 对不起,那个 _ac 位是由于我的代码扩展了它以供多个实例使用。我已经清除了,这应该可以满足您的需求。
    • 感谢@JohnP - 非常感谢。我尝试了您发布的内容以使其正常工作,但我仍然是一个 JS 新手 - 我已经发布了我最终得到的答案,所以也许您可以确认我我做得很好。我觉得你的代码中有几处是不必要的,所以我根据自己的需要对其进行了一些简化。
    • 是的,没关系。它只是看起来有点不同,因为我们缓存了请求并添加了一些额外的代码以使其更易于重用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-28
    • 1970-01-01
    • 1970-01-01
    • 2015-12-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多