Javascript jQuery运行ajax,在POST之前得到响应

时间:2014-02-10 18:08:34

标签: javascript php jquery ajax

无论如何运行ajax脚本并让它在运行表单POST之前得到响应。

我不想通过ajax发布主表单。我只是希望它能够工作,而当用户点击提交时,我希望ajax进行调用并检查一个值,然后当响应返回时,如果响应成功,表单将通过浏览器POST。

谢谢!

4 个答案:

答案 0 :(得分:2)

您需要使用submit截取preventDefault()事件,然后进行ajax调用并决定是否应提交表单(传统POST或其他ajax调用)

示例代码:

$('.form-selector').on('submit', function(e) {
    e.preventDefault();

    $.ajax({
        // some call you want to make
    }).done(function() {
        e.target.submit(); // this submits the form without generating the event again
    }).fail(function() {
        // validation failed, do someting here
    });
});

答案 1 :(得分:0)

为什么不尝试两次Ajax调用。在第一次ajax呼叫成功后,您可以发布数据。

所以这里我的意思是说在第一次Ajax调用调用时进行验证,然后在成功时进行另一次Ajax调用并将数据发送到服务器。

答案 2 :(得分:0)

var ajax=false; // form has not been submitted, AJAX not responded
$("form").submit( function(e){
    if ( ajax == true ) return true; // if AJAX response, process form normally

    // if no AJAX response, prevent form from submitting
    e.preventDefault();

    // talk to server
    $.ajax({
        ....,
        success: function(){
            // AJAX successful! change value of variable, and submit form
            ajax = true;
            $("form").trigger("submit");
        })
    });

    return false;
});

答案 3 :(得分:-1)

使用元素的onSubmit方法,如<form .... onSubmit="fetchData()">

现在,自己动手:

function fetchData(){
  // send your ajax data and validate.
  return true; // true or false depending on what you validated
}