单击表单提交后的Ajax请求

时间:2017-09-29 04:15:47

标签: javascript html ajax forms

我有一个表单,并且在该表单中有一个QR码.QR代码是根据表单值生成的。按下提交按钮时,我需要的是

  1. 表单值必须提交到数据库
  2. 请求QR码的ajax请求并更新qr码。

    function getNewQrcode() {
     customRequest({
       type : "GET",
       url: ROOT_PATH + "hotel/qrcode",
       success: function(data) {
       document.getElementById("qrcode-holder").innerHTML = data;
     },
     error: function(err) {
     alert("Error" + err.Message)
     }
    });
    }
    
    function formSub(){
     $("#hotel_device_settings_form").submit();
    }
    
    function combinedEvent(){
     formSub();
     getNewQrcode();
     return true
    }
    

    HTML按钮

    <button onclick="combinedEvent();" >SAVE</button>
    
  3. 当我单击按钮两次时,每件事都有效。在第一次单击表单提交时,在第二次单击时QR码正在更新。 有可能单击一下吗?

2 个答案:

答案 0 :(得分:0)

创建iframe <iframe id="createdIframe" style="display: none;" ></iframe>并添加表单'target'属性:<form target="createdIframe" >

例如:

function getSubmit() {
  document.forms[0].submit();
  $.ajax({
    url:'/action',
    data: {
      name: 'test'
    }
  })
}
form {

}
button {
width: 100px;
height: 30px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<iframe id="createdIframe" style="display: none;" ></iframe>
<form action="/" target="createdIframe">
  <input type="text" name="name" /> 
  <br><br>
  <button onClick="getSubmit()">Submit form</button>
</form>

答案 1 :(得分:0)

两次发出ajax请求。首先通过ajax发送表单的数据。您可以将其转换为任何合适的形式(如JSON)并将其发送到服务器。之后再次为QRcode发出ajax请求。

示例:

<script>
    function formSub(){

        // Convert the attributes accordingly (In JSON or anthing else) to be sent.

        var variable1 = $('#variable1').val();
        var variable2 = $('#variable2').val();

        var dataString = {"variable1" : variable1, "variable2" : variable2};
        var dataJson = JSON.stringify(dataString);

        // Do form Validation accordingly
        if(variable1 == "")
        {
           alert('Please enter the details');
           document.getElementById("variable1").focus();
        }

        // Make the post request to the desired page
        $.ajax({
            type: "POST",
            url: path,
            data : dataJson,
            success: function(result)
            {
                // Return success if the data insertion is successful
                if(result=="success")
                {
                    console.log("success");
                }
            },
            error : function(error)
            {
                console.log("error");
            }
        });
    }


    function getNewQrcode() {
        customRequest({
            type : "GET",
            url: ROOT_PATH + "hotel/qrcode",
            success: function(data) {
                document.getElementById("qrcode-holder").innerHTML = data;
            },
            error: function(err) {
                alert("Error" + err.Message)
            }
        });
    }


    function combinedEvent(){
        formSub();
        getNewQrcode();
        return true
    }
</script>