2010-03-07 128 views
0

我想在完成Ajax调用后显示成功消息。 我试着做到以下几点:ajaxComplete未启动

$("form.stock").submit(function(){ 
    $.post('/ajax/transactionupdate', params, function(data) { 
    $this.append("success"); 
    } 
}); 

的问题是,回调函数里面,好像$(这)是未知的(而不是实例的一部分)。

所以我试图用ajaxComplete /的ajaxSuccess如下,但由于某些原因,一旦Ajax是完成,他们甚至没有启动:

$(this).ajaxComplete(function() { 
     alert("STOP"); 
    }); 

然而,ajaxStart似乎工作:

$(this).ajaxStart(function() { 
     alert("START"); 
    }); 

任何人都可以注意到最新的问题?

谢谢! 乔尔

回答

0
$("form.stock").submit(function(e){ 
    e.preventDefault() 
    var el = this; 
    $.post('/ajax/transactionupdate', params, function(data) { 
    $(el).append("success"); 
    } 
}); 

上下文是window由于XMLHttpRequest方法由窗口拥有并在内部被$.post调用。

+0

太棒了!它的工作原理,非常感谢 – Joel 2010-03-07 19:43:01

0

首先,最初的例子中可以重新做这样的:

$("form.stock").submit(function() { 
    var stockForm = $(this); 
    $.post('/ajax/transactionupdate', params, function(data) { 
    stockForm.append("success"); 
    }); 
    return false; 
}); 

您应该从“提交”处理程序返回false防止“原生”的形式从发生提交。

+0

也工作,感谢关于“本机”提交 – Joel 2010-03-07 19:43:21

+0

的信息返回'false'并在事件对象上调用“preventDefault()”例程将具有相同的效果。 (实际上,返回'false'也会产生调用“stopPropagation”的效果,这对于“submit()”例程来说并不是特别有趣,因为你很少会嵌套表单。) – Pointy 2010-03-07 21:09:14