簡體   English   中英

提交表單會觸發ajax調用,該調用會在成功時發布到操作頁面

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM