[英]Submitting a form triggers an ajax call which posts to the action page on success
我有一個帶有用戶名和密碼的登錄表單。 我與用戶發布了一個Web服務的帖子,並作為參數傳遞,我找回了該用戶的ID。
我想要實現的是,在表單提交時,進行ajax調用,然后填充ID字段(我需要),然后使用$('#form1').post();
提交表單$('#form1').post();
。
為了防止默認行為,我有一個return false;
在.submit()
事件的開頭。
$('#form1').submit(function() { $('#sajax-loader').show(); $.ajax({ type: "POST", contentType: "application/json; charset=utf-8", data: '{user:"' + $("#user").val() + '",pass:"' + $("#pass").val() + '"}', url: "URL.asmx/validate", dataType: "json", success: function (data) { $('#id').val(data.d); $('#sajax-loader').hide(); $('#form1').post(); $('#login-notification').show(); }, error: function (err) { $('#login-notification').html("An Error Occured " + err); } }); return false; });
顯然這是錯誤的方法,因為我在提交時沒有收到任何回復。
有人能引導我朝正確的方向發展嗎? 提供一些關於如何調整我在這里提交函數的建議,或者可能是一種完全不同的更實用的方法?
開始return false
將停止執行submit()
在這一點上,從那里你函數return
和代碼的其他部分並沒有執行。 所以,最后將你的return false
。
換句話說 ,使用.preventDefault()將停止默認表單提交行為。
$('#form1').submit(function(e) {
// instead of return false
// use e.preventDefault()
e.preventDefault();
$('#sajax-loader').show();
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
data: '{user:"' + $("#user").val() + '",pass:"' + $("#pass").val() + '"}',
url: "URL.asmx/validate",
dataType: "json",
success: function (data) {
$('#id').val(data.d);
$('#sajax-loader').hide();
$('#form1').post();
$('#login-notification').show();
},
error: function (err) {
$('#login-notification').html("An Error Occured " + err);
}
});
});
代替
data: '{user:"' + $("#user").val() + '",pass:"' + $("#pass").val() + '"}',
您可以使用:
data: {user: $("#user").val() ,pass: $("#pass").val() },
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.