Jav*_*eva 0 javascript ajax jquery
我试图根据其中的AJAX函数的响应将函数返回true或false,但我不知道该怎么做.
(function($) {
$('#example').ajaxForm({
beforeSubmit : function(arr, $form, options) {
var jsonStuff = JSON.stringify({ stuff: 'test' });
$.post('/echo/json/', { json: jsonStuff }, function(resp) {
if (resp.stuff !== $('#test').val()) {
// Cancel form submittion
alert('Need to type "test"');
return false; // This doesn't work
}
}, 'json');
},
success : function() {
alert('Form sent!');
}
});
})(jQuery);?
Run Code Online (Sandbox Code Playgroud)
我做了一个小提琴来更好地说明这一点:
http://jsfiddle.net/vengiss/3W5qe/
我正在使用jQuery和Malsup的Ajax Form插件,但我相信这个行为与插件无关,我只需要根据请求return false来处理beforeSubmit函数,POST这样每次都不会提交表单.有人能指出我正确的方向吗?
提前致谢!
处理异步函数时,这是不可能的.调用的函数post将立即返回,而ajax回调将在将来的某个时刻返回.不可能从现在返回未来的结果.
相反,您需要做的是将回调传递给原始函数.最终将使用ajax调用的结果调用此函数
var makePostCall = function(callback) {
$.post('/echo/json/', { json: jsonStuff }, function(resp) {
if (resp.stuff !== $('#test').val()) {
// Cancel form submittion
alert('Need to type "test"');
callback(false);
} else {
callback(true);
}}, 'json');
};
Run Code Online (Sandbox Code Playgroud)
然后将期望快速响应的代码切换makePostCall为使用回调.
// Synchronous version
if (makePostCall()) {
// True code
} else {
// false code
}
// Async version
makePostCall(function (result) {
if (result) {
// True code
} else {
// False code
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2423 次 |
| 最近记录: |