【问题标题】:How to call javascript method on after multiple selection of select box多选选择框后如何调用javascript方法
【发布时间】:2015-02-05 11:51:11
【问题描述】:

之前我使用 onchange 事件来调用 javascript 方法(在此方法中使用 AJAX 调用将选定的选项传递给服务器)。但这会导致在多个选项选择上对服务器进行多次 AJAX 调用。有没有办法在选择框中进行多项选择后调用javascript方法,这样我就可以防止对服务器的多次AJAX调用。

【问题讨论】:

  • 在 onchange 事件之后调用 AJAX。所以基本上选择所有选项,将其存储在一个变量中,然后稍后调用 AJAX 并传递变量
  • 在 onchange 处理程序中使用 setTimeout 函数。当时间到了,并且没有触发 onchange 事件时,将数据发送到服务器,否则再次调用 setTimeout。此逻辑用于自动完成字段。
  • @Mohit,但我们怎么知道用户何时完成选择,然后再进行 ajax 调用?

标签: javascript


【解决方案1】:

在这里它将中止处理 ajax 请求并仅考虑最后一个请求..

$(document).ready(function(){
    $("#searchInput").onchange(function(){
        ajaxSelect( $("#searchInput").val() );
    });
});

var request;
function ajaxSelect(selectedKey) {
    /* if request is in-process, kill it */
    if(request) {
        request.abort();
    };

    request = $.ajax({
        type: "get",
        url: "http://example.com/ajaxRequestHandler/",
        data: "action=selectmulti&selectedKey=" + selectedKey
    }).done(function() {
        /* process response */

        /* response received, reset variable */
        request = null;
    });
}

【讨论】:

  • 感谢prashant,但我正在使用prototype.js 用于ajax,我们没有任何选项可以中止请求。
  • @AnilGoud abortxhr 对象的普通js方法
【解决方案2】:

一种方法是明确定义以下事件。

在选择框中进行多选后

如果适合您的需要,您可以考虑在选择框上使用其他事件(例如 onblur 或 onmouseout)来发送 ajax 请求。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-14
    • 2017-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-06
    相关资源
    最近更新 更多