根據我的意見,有幾件事情可能導致這種情況。
- 你必須有不顯眼的文件(S)加載多次
- 在窗體中有定義的操作方法,和你的按鈕是表單標籤作爲一個提交按鈕內。這將提交表單,然後點擊還將提交表單 - 見例
例
<form action="/somerowout/someaction">
<input type="text" id="text1"/>
<input type="text" id="text1"/>
<input type="submit" />
</form>
如果您需要發佈前表單上驗證一個值,不連接一個額外的Ajax調用。您的JavaScript看起來像:
$(document).ready(function() {
$("form").submit(function(){
var result = $("#enrolledStudents").sortable('toArray');
if(result == null){
//do something to show validation failed
return false;
}
return true;
});
});
而且你的表單代碼然後將類似:
@using (@Ajax.BeginForm(new AjaxOptions { })) {
<input type="text" id="text1"/>
<input type="text" id="text1"/>
<input type="submit" />
}
如果你想使用Ajax,而不是HTML輔助,使用DIV,而不是的形式,你不會得到一個重複的職位。這裏是你如何能做到這一點:
<div id="enrolledStudents">
<--! your elements -->
<button id="saveStudents">Save</button>
</div>
的JavaScript
$(document).ready(function() {
$("saveStudents").click(function(){
var result = $("#enrolledStudents").sortable('toArray');
if(result !== null){ /* do some kind of check here. */
$.ajax({
url: '@Url.Action("Enrollment", "Classroom")',
data: { students: result },
type: 'POST',
traditional: true,
success : function(data) {
if (data.status) {
window.location = data.route;
}
}
})
} else {
/* notify ui that save didn't happpen */
}
});
});
例控制器動作 當發佈使用Ajax數據,下面是如何傳遞路線
[HttpPost]
public ActionResult SomethingPost(SomeModel model) {
if (Request.IsAjaxRequest()) {
var json = new {
status = true,
route = @Url.RouteUrl("MyRouteName", new { /* route values */ })
};
return Json(json, JsonRequestBehavior.AllowGet);
}
}
爲例
看看您的加載腳本,並確保不顯眼的文件沒有被加載兩次。當這些事件被連接兩次時,我已經看到了這種情況。此外,按鈕「更新 - 註冊」提交類型按鈕?如果是這樣,那麼你正在勾選一個事件來點擊提交表單的按鈕,然後你正在進行另一個調用。你能提供表單的HTML嗎? – anAgent 2012-07-27 17:17:05
是的,我必須這樣做?我有一個變量var結果....我需要作爲參數傳入,如果我沒有這樣做,它會出現NULL,我該如何解決這個問題?我寧願不掛鉤事件點擊按鈕。 – 2012-07-27 17:21:08
請參閱下面的答案。 – anAgent 2012-07-27 17:29:09