如何获取ajax响应以触发click

时间:2016-07-03 08:15:18

标签: javascript java jquery html ajax

当我点击buy now按钮通过pincode发送请求时,我有buynowajax两种表单,pincode形式也同样如此

HTML

 <form method="POST" action="/cart/add" id="myForm"> 
  .....
  ....
  <input type="button"  class="buyNowBtn" id="btnBuyNow"/>
 </form>

 <form action="#">
     <input type="text" id="pinCheck" class="pinCheck" placeholder="enter pin code" />
     <button class="btn btn-info" id="pinCheckTest"> Check</button>
 </form>

在同一buynow点击事件中,我需要trigger一个pincode提交按钮,所以我这样做了

(document).on('click', '#btnBuyNow', function (e) {
    ....
    ....
    $("#pinCheckTest").trigger('click');
    ....

});

上述trigger事件成功调用pincode点击事件

$('#pinCheckTest').click(function () {
  $.ajax({
    type: 'GET',
    url: url,
    success: function (output) {
        if (output == 'true') {
            }
       else{
        }
    }
});

但是我需要将ajax响应回trigger事件,以便我可以做一些操作吗?

类似

 (document).on('click', '#btnBuyNow', function (e) {
    ....
    ....
    $var output=$("#pinCheckTest").trigger('click');//I need to get ajax response back to this click
    if(output=='true'){
           ......
      }else{
       .....
      }
    ....

});

2 个答案:

答案 0 :(得分:1)

您可以在click处理程序之外定义变量,调用.trigger()时,将$.ajax()分配给变量,在第一个.then()处理程序中使用click处理$.ajax()电话的结果。

注意,包含event.preventDefault()以阻止提交<form>,正如@IsmailRBOUH所指出

var dfd;
$(document).on('click', '#btnBuyNow', function (e) {
    e.preventDefault();
    ....
    ....
    $("#pinCheckTest").trigger('click');
    if (dfd) {
      dfd.then(function(output) {
        // do stuff with output
        console.log(output)
      })
    }
    ....

});

$('#pinCheckTest').click(function (e) {
  e.preventDefault();
  dfd = $.ajax({
    type: 'GET',
    url: url,
    success: function (output) {
      if (output == 'true') {}
      else{};
    }
  })

});

var dfd;

$("#first").click(function() {
  $("#second").trigger("click");
  if (dfd) {
    dfd.then(function(data) {
      alert(data)
    })
  }
})

$("#second").click(function() {
  // do ajax stuff
  dfd = $.when("second clicked")
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="first">first button</button>
<button id="second">second button</button>

答案 1 :(得分:1)

由于您将点击事件绑定到button内的form,因此您可以阻止默认行为“提交表​​单”。将代码更改为:

$('#pinCheckTest').click(function (e) {
    e.preventDefault();
    //Your ajax call
});

以下是澄清区别https://jsfiddle.net/qvjjo3jk/的演示。

<强> UPDATE1:

在表单中添加id

<form action="#" id="pinCheckForm">
     <input type="text" id="pinCheck" class="pinCheck" placeholder="enter pin code" />
     <button class="btn btn-info" id="pinCheckTest"> Check</button>
 </form>

然后:

$('#pinCheckForm').submit(function(e) {
    e.preventDefault();
    $.ajax({
        type: 'GET',
        url: url,
        data: $(this).serialize(), //Sends all form data
        success: function(output) {
            if (output == 'true') {} else {}
        }
    });
});