2017-09-15 33 views
6

パスワード変更ページを作成中にユーザー名やその他のフィールドを確認しようとしています.JqueryスクリプトのAJAX呼び出しがコントローラに当たっていません.iは、 ajaxリクエストのurlフィールドに追加します。 以下はスクリプトですJQuery/AJAX呼び出しでSpring MVCコントローラが起動しない

このcheckUname関数は、入力フィールドの1つからonblurイベントをトリガーしています。

<script type="text/javascript"> 
     function checkUname() 
      { 
       // get the form values 

       var uName = $('#username').val(); 
       var secQues = $('#secQues').val(); 
       var secAns = $('#secAns').val(); 

       var dataObject = JSON.stringify({ 
                'uName' : uName, 
                'secQues': secQues, 
                'secAns' : secAns 
               }); 
      $.ajax({ 
        url:"validateCredentials.do" , 
        type: "POST" , 
        data: dataObject , 
        contentType: "application/json; charset=utf-8" , 
        dataType : 'json' ,     
        success: function(response) 
               { 
               alert(response);       
               } , 
        error: function() 
             { 
             alert('Error fetching record.... Sorry..'); 
             } 
        }); 
     } 
     </script> 

これは代わりに、コントローラにRequestParamを使用しての私のMVCコントローラ

@Controller 
public class ArsController 
{ 
    @RequestMapping(value="validateCredentials.do", method = RequestMethod.POST) 
    public String changePass(@RequestParam("uName") String uName ,@RequestParam("secQues")String secQues, 
            @RequestParam("secAns") String secAns) 
    { 
     System.out.println("AJAX request"); 
     Users dummyUSer = null; 
     String msg = null; 

       try 
       { 
        dummyUSer = servObj.findUser(uName); 
       } 
       catch (ArsException e) 
       { 
        System.out.println("error occurred while validating user data during password change"); 
        e.printStackTrace(); 
       } 

       if(dummyUSer == null) 
       { 
        msg = "No user exists with this username"; 
       } 

       else 
       { 
        if(!secQues.equals(dummyUSer.getSecQues())) 
        { 
         msg = "Security question is not correct"; 
        } 
        else 
        { 
         if(!secAns.equals(dummyUSer.getSecAns())) 
         { 
          msg = "Security answer does not match"; 
         } 
        } 
       } 

     return msg; 
    } 
+0

私は持っていませんJavaコードに関するアイデアはありますが、AJAXリクエストには 'type:" POST "がありますが、' method: "POST"でなければなりません。 –

+0

提案したとおりに変更しましたが、現在は "INFO:HTTPリクエストヘッダーの解析中にエラーが発生しました 注: java.lang.IllegalArgumentException:無効な文字がリクエスト対象に見つかりました " – Sourabh

+0

この[ソリューション](https://stackoverflow.com/questions/18819180/)を使用することができます。 tomcat-7-0-43-info-error-parsing-http-request-header)しかし、私はJavaについてよく知らないので、それが助けになるかどうかはわかりません。また、あなたのAJAXリクエストはうまくいきました。バックエンド/サーバからの問題をデバッグする必要があります。 –

答えて

2

である、あなたは文字列を使用する必要があります。 JSONデータをポストしているとき、Requestでは個々のパラメータとして渡されるのではなく、コントローラでStringとして受け取られるためです。 StringをJSONオブジェクトに変換し、それに応じて値を取得します。

0

コンテンツタイプとデータタイプを削除してみます。 オブジェクト内で解析する必要のあるjsonを送信していない場合は、コントローラのパラメータを送信しています。 これを行う方法は、Ajaxのデータ内のオブジェクトを使用していますが(コンテンツタイプやデータタイプは「1つのjsonパラメータを送信しています」)、

関連する問題