无论如何运行ajax脚本并让它在运行表单POST之前得到响应。
我不想通过ajax发布主表单。我只是希望它能够工作,而当用户点击提交时,我希望ajax进行调用并检查一个值,然后当响应返回时,如果响应成功,表单将通过浏览器POST。
谢谢!
答案 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
}