2010-03-07 35 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