如何检查我的所有ajax请求是否完整?

时间:2016-01-10 21:20:40

标签: jquery ajax

我的表单上有三个self.map_filename输入。每个选择都有一个零值的选项。

如果值为零,我不想发出ajax请求。如果所选选项 有值,那么我确实想要发出请求。

以下是每个<select>的样子:

select

我知道我可以使用<form="myForm" action="" method="post"> <select name="mySelectOne"> <option value="0">Free</option> <option value="1">$1.00</option> <option value="2">$2.00</option> </select> <select name="mySelectTwo"> <option value="0">Free</option> <option value="1">$1.00</option> <option value="2">$2.00</option> </select> <select name="mySelectThree"> <option value="0">Free</option> <option value="1">$1.00</option> <option value="2">$2.00</option> </select> <button type="submit">Submit</button> </form> 检查我的ajax请求是否完整,但我不确定我会有多少。

现在我只是使用$.when()语句来遍历每个输入。

$.each

我试图计算我有多少输入:

$('#myForm select').each(function (key, elm) {
    ....
    // find out how many request(s) i need to make
    if(totalRequests == ??) {
      // I'm all done
    }
});

如果我总是提出三个请求,那就没问题。我可能只有两个......或者只有一个。在这种情况下,$('#myForm').submit(function(e){ var length = $('#myForm select').length; var count = 1; $('#myForm select').each(function (key, elm) { onFormSubmit(data, function (result) { // handle response }); count++; if(count == length) { // all done. } }); }); var onFormSubmit = function(callback){ // ajax stuff } 不是很可靠。

任何建议都会有所帮助!

修改

我已经更新了我的js @freakish建议:

length

1 个答案:

答案 0 :(得分:0)

循环选择,发出请求(如有必要)并使用from selenium.webdriver.support.select import Select option_value = "Malicious E-mail" select_element = browser.find_element_by_xpath("//select[option[@value = '%s']]" % option_value) select = Select(select_element) select.select_by_value(option_value) ,如下所示:

$.when

诀窍是使用var reqs = []; $('#myForm select').each(function (key, elm) { // some stuff if (condition) { reqs.push( $.ajax( // the request ) ); } } $.when.apply($, reqs).then(function() { // when all done }); 使其动态化。

请注意,如果.apply为空,那么reqs也会触发。