私は解決できないような問題があります。関連性のある最初のコンテキスト。Ajax、JQuery Validation、MVC
私のソフトウェアのためのMVCのようなフレームワークを構築しています。私は、すべての入力フォームがajax経由でバックエンドコントローラにデータを送信し、データをルーティングし、適切なデータベースに入力するようにします。すべてのHTMLコードはPHPクラスから生成され、JavaScriptはPHPクラスから生成されます。
私が抱えている問題は、ajax機能です。私は非同期に提出したいのですが、ポストリクエストを正常に提出しようとしています。いろいろな時点で正しく動作していましたが、フレームワークの側面を変更すると壊れているようです。私は "form.preventDefault()"と "return false"のさまざまな組み合わせを試みましたが、それは問題にはならないようです。検証部が動作します(無効なエントリでは送信されません。thisプラグインを使用しています)。私はJavaScriptキャッシュ自体を発見しました。私はファイル名にバージョン番号を追加することでそれを処理しました。
ここにajaxコードがあります。リクエストのステータスについてユーザにメッセージを返します。なぜそれが非同期的に提出するのを拒否するか?ここで
$(document).ready(function() {
// Initialize form validation
***old code
$("form[name='ajaxform']").validate({ ***
// Specify validation rules
***Updated code
$('#ajaxsubmit').on('click', function() {
$("#ajaxform").valid();
});
// Initialize form validation
$('#ajaxform').validate({ ***
....[omitting the validation rules for brevity]
errorElement : 'div',
errorLabelContainer: '#usermessage',
submitHandler: function(form) {
$.ajax({
cache : false,
url : $(form).attr('action'),
type : 'POST',
dataType: 'text',
data : $(form).serialize(),
success : function(data) {
var response = $.parseJSON(data);
if(response['error']){
$('#usermessage').html(response['error']);
}else{
if(response['success']){
$('#usermessage').css({"color":"#00b300","font-weight":"bold"});
$('#usermessage').html(response['success']);
}
}
},
error : function(err) {
alert(err);
}
});
return false;
}
});
});
@shamelessApathyを、検証プラグインはフォームの送信に応答しますので、あなたが言うように、あなたが「ボタン」にボタンの種類を変更した場合、どのようにプラグインをトリガーするのでしょうか? – AppreciateCo
私はこれを見つけました。 https://www.google.com/url?sa=t&source=web&rct=j&url=https://stackoverflow.com/questions/13671710/jquery-form-validation-on-button-click&ved=0ahUKEwjH3P75k7TVAhVV2GMKHYViD-AQFggeMAE&usg=AFQjCNE9Q6JDrlG0zgDxgSCvEuoLggLruw。私はそれを試し、あなたに戻ってきます。ありがとう! – AppreciateCo