利用可能なユーザー名のリモートチェックを含む、作業フォームの検証に使用されていたものがあります。私たちはscript.jsファイルに他の多くのjavascriptを追加しましたが、最近ではこの部分の遠隔地が壊れています。 validateによってチェックされるフォームフィールドは、new_nameフィールドのみです。それは必須であり(動作している)、使用可能でなければならない(動作しない)必要があります。ここでJquery Validate Remoteが失敗しています。フォームを送信できません
はjQueryのです:
$('#nickname_form').validate({
rules: {
new_name: {
required: true,
remote: {
url: '/api/screenname_unique/',
type: 'post'
}
}
},
messages: {
new_name: {
required: 'Please choose a Forum Username.',
remote: 'That Username is already taken or contains invalid characters.'
}
}
});
私は変更なしで、動作するように使用され、上記の言ったように。私はscript.jsファイルの残りの部分をチェックし、エラーは表示されません。また、サイトではJSエラーはどこにも表示されません。上記のコードの遠隔部分を削除すると、必要なチェックが機能し、フィールドに値があるときにフォームが送信されます。
リモートでは、フォームは送信されず、リモート呼び出しからのajax応答がtrueまたはfalseであるかどうかを示すjQuery検証エラーメッセージは表示されません。ここでは、リモートから呼ばれるページです。私はここから行くのはどこ本当にわからない
<?php
header('Content-type: application/json');
//get the post value
$screen_name = $_POST['new_name'];
//get their member_id
$member_id = $this->EE->session->userdata['member_id'];
//return false if no screen_name provided
if((!$screen_name) || (!$member_id)) {
echo json_encode(false);
exit;
} else { //there is a screen_name
//Regex Check for valid chars
$valid = !preg_match('/[^a-z0-9_ -]/i',trim($screen_name));
if (!$valid) {
echo json_encode(false);
exit;
}
//SQL
$results = $this->EE->db->query("SELECT member_id FROM exp_members WHERE screen_name = '$screen_name' and member_id <> '$member_id' limit 1");
if ($results->num_rows() > 0) {
echo json_encode(false);
} else {
echo json_encode(true);
}
}
>
:?それは与えられた値のために与えている応答限り正常に動作します。アイデア?
問題をデバッグするために 'console.log'を使用したか、ajax呼び出しを監視しましたか? – yoda
私はFirebugを見ており、ajaxコールは200 OKをtrueまたはfalseと共に適切に返しています。この関数は正常に動作しています。フォームは使用できないユーザー名を正しく送信または応答しません。 –