2016-05-06 10 views
0

ユーザーの電子メールアドレスが一意であることを確認しようとすると、Jqueryが問題を発見しました。 ユーザーの詳細の更新フォームを検証しようとしています。今、電子メールとユーザー名は一意であるため、Jqueryの検証ルールのリモートルールで検証しようとすると、入力された値のみが送信され、サーバー側のコードは同じユーザーによって取得されたとしても、 。 それで、私の質問は、jqueryでこれを防ぐ方法がありますか?同様に、何らかの種類のデータ元値属性のように、または代わりに、それがサーバー側のコードでそれを使用してAjaxリクエストで追加データを送信できるようにする方法があるかどうかをチェックしますその値は同じユーザーによって取られているかどうか?ユーザーの詳細の確認ページの更新 - ユーザー名/電子メールのリモート検証

ここに私のコードです。それはかなり標準です:

$(".validateForm").validate({ 
    rules: 
    { 
     handle: 
     { 
      required: true, 
      remote:'/home/check' 
     } 
    }, 
    messages: 
    { 
     handle: 
     { 
      required: "Must include a handle", 
      remote:"This handle is already used up. Please, choose another one." 
     } 
    } 
}); 

答えて

0

... jqueryの検証を介してこれを防ぐ方法のいくつかの種類がありますか?

remote方法への知性は、それは単にあなたがそれをサーバーから送信何ごとに検証...ありません。つまり、サーバ側のコード/home/checkは、フィールドが有効かどうかを調べ、適切な応答を返す必要があります。

サーバー側のコードは、既にログインしている既存のユーザーやアカウントを編集しているかどうかを知るには十分にスマートではありませんか?結局のところ、クライアントサイドのコードに頼っているということは、単にJavaScriptを無効にしたり変更したりするだけで誰もがこれを打ち負かす可能性があるということです。

...または代わりに、それはAjaxのリクエスト

はいで追加データを送信するために取得する方法があります。

Reading the docs

... オプションが完全に要求をカスタマイズする[ため]、だから、ドキュメント内の例のように、あなたが使用できる詳細

ためjQuery.ajaxを見ますdataオプションから$.ajaxこのように...

rules: { 
    handle: { 
     required: true, 
     remote: { 
      url: '/home/check', 
      data: { 
       more_stuff: function() { 
        return "some_value"; 
       } 
      } 
     } 
    } 
} 

検証されているフィールドの値がこれと共に送信されていることに注意してください。


追記you may wish to reconsider using Allman code formatting for your JavaScript

関連する問題