2011-11-28 103 views
0

美好的一天。提交前運行ajax腳本

我遇到了在表單提交之前運行ajax調用的問題。我只是一個新手web開發人員,所以請耐心等待。

我的代碼是這樣的:

$(function() { 
$('#formname').submit(function() { 
    $.post('validation.php', $(this).serialize(), function(data) { 
    if(data == 'something') return true; 
    else return false; 
    }); 
} 
}); 

此代碼是不是爲我工作。代碼有什麼問題或者有其他方法可以實現這一點。

由於提前,

+0

什麼是你想達到什麼目的?在提交之前驗證? –

+0

是的先生Sandeep G B ...我想驗證表單內容與我的數據庫記錄... – KiiroSora09

+0

任何反饋我的朋友嗎?我的解決方案工作與否? – erimerturk

回答

1

你可以定義點擊事件你的提交按鈕。然後當你點擊它,首先做你的文章,然後提交表單。

HTML:

<form id="target" action="destination.html"> 
    <input type="text" value="Hello there" /> 
    <input type="submit" value="Go" /> 
</form> 
<div id="other"> 
    Trigger the handler 
</div> 

JS:

$('#other').click(function() { 

    $.post('validation.php', $('#target').serialize(), function(data) { 
    if(data == 'something') { 
     $('#target').submit(); 
    } 
    }); 
}); 
+0

感謝您的回覆sir erimerturk ...這就是我最近纔想到的......現在就試試吧...... – KiiroSora09

+0

在AJAX回調函數中返回false是什麼意思? – ThiefMaster

+0

謝謝!它爲我工作。 –

1

您需要return false;在提交處理程序,而不是AJAX的回調裏面。但是,更好的做法是將函數更改爲接受參數e,然後在執行AJAX調用之前調用e.preventDefault();。如果驗證成功,請使用$('#formname')[0].submit();實際提交表單,而無需再次調用提交處理程序。

PS:最好使用插件,如優秀的jQuery form pluginvalidation plugin

+0

ThiefMaster先生感謝您的快速回答...我會嘗試您的建議,並看看插件... – KiiroSora09

2

你可以做到這一點,但它很醜,你真的不想這樣做。

$(function() { 
$('#formname').submit(function() { 
    var returnValue; 
    $.post({ 
    async: false, // This makes it possible 
    url: 'validation.php', 
    data: $(this).serialize(), 
    success: function(data) { 
     if(data == 'something') returnValue = true; 
     else returnValue = false; 
    } 
    }); 
    return returnValue; 
} 
}); 

但你爲什麼要這樣?因爲你可以做另一個Ajax函數並做好準備。當你完成你的Ajax請求後,你可以做一個document.location= "newlocation.html"。因爲現在你的應用程序將等待直到你完成了一個Ajax請求。如果您的ajax請求需要10秒鐘,則人們無法使用您的頁面10秒鐘。

如果您只是總是return false並且執行Ajax請求,您將在其中處理表單。只要你做了document.location,將是一個更好的選擇。所以你的應用程序不會卡住。

+0

尼爾斯爵士感謝您的快速答覆..我也會嘗試你的方法......但我認爲我會嘗試將ajax調用放在提交按鈕上單擊,然後在有效的ajax返回值返回時提交表單...並且當ajax請求仍在處理時,我還會發出一個等待消息... – KiiroSora09

+1

不需要使用Sjax以此目的。執行異步回調後,您可以輕鬆地提交表單。 – ThiefMaster

+0

+1,我同意。提交之前的Ajax調用不是必需的。執行客戶端驗證並提交數據。如果提交的數據無效(因爲您不能信任客戶端數據,您需要執行雙重驗證),則返回錯誤。 –