終於搞定了!這是我最終的JS代碼。雖然表單本身提交給「/ search/result/keyword」作爲默認動作,但驗證是完全不同的「/ search/validate/searchkeyword」URL。
<script type="text/javascript">
Event.observe(window, 'load', function()
{
Event.observe('searchkeyword', 'submit', function(event)
{
Event.stop(event);
new Ajax.Request('/search/validate/searchkeyword',
{
method: 'post',
parameters: $('searchkeyword').serialize(true),
onSuccess: function(t)
{
var response = t.responseText || "ERROR|An error has occurred.";
var responsearray = response.split('|');
if(responsearray[0] == 'ERROR') { document.getElementById('searchkeywordvalidate').innerHTML = responsearray[1]; }
else { $('searchkeyword').submit(); }
},
onFailure: function() { document.getElementById('searchkeywordvalidate').innerHTML = 'An error has occurred.'; }
});
});
});
</script>
通過沒有錯誤,我的意思是驗證通過和窗體可以繼續正常提交。我在驗證時繼續進行服務器處理時碰到的問題是,我在客戶端有一個填充了答覆的DIV。因此,任何繼續的服務器處理也會顯示在DIV中。我今晚會爲這個例子發佈一些代碼。 – MattB 2010-06-16 13:52:24