$('#speichern').live('click' , function () {
var data_save = $('#form_rechn').serialize()+ '&' + 'action=save' + '&' + 'total=' + Number($('#grandTotal').text().replace(/EUR/g, ""));
$.ajax({
type : "POST",
cache : false,
url : 'invoice_new_action.php',
data : data_save,
ajaxSend : $.post("invoice_new_action.php",{"action":"before","rn": $('#rn').val()},function(huhn){
var totest = Number(huhn)
if ( totest == "") {
} else {
$('#rn').val(totest);
$.fancybox('nr. existiert. ');
return false; // Why don't stop here?
};}),
error:function (xhr, ajaxOptions, thrownError){
alert(xhr.status);
alert(thrownError);
},
success : function(data) {
$.fancybox(data);
}
});
我可以采用其他方式吗?为什么ajax没有通过return false
停止?
答案 0 :(得分:1)
为什么不停止?因为您定义的函数是$.post
的回调函数,当您从post发出响应时将始终调用它。因为默认情况下$.post
是异步的,所以您无法发布并等待响应,以确定是否应继续使用原始的ajax调用。
你可以使用同步ajax帖子(eww!bad!)或者你可以解释你想要完成的最终结果。在社区的帮助下,也许您可以重新考虑您的实现,而不需要一个ajax帖子来决定是否需要发布另一个。一般来说,我认为你想要的是这个:
$('#speichern').live('click' , function () {
// Immediately post to test if you should keep going
$.post('...',function(huhn){
// ...
if (totest){
// Oh, OK, now we can call the real ajax.
$.post(...,data_save,function(data){
$.fancybox(data);
});
}
}
});