2017-08-08 10 views
0

Controller.java開発ツールのajaxステータスは200ですが、なぜそれはエラーになりますか?

@RequestMapping(value="show_allMember.do",produces = MediaType.APPLICATION_JSON_UTF8_VALUE,method = RequestMethod.GET) 
public @ResponseBody String memberList(Model mav) 
{ 
    List<HashMap<String, Object>> members = aService.getMemberList(); 
    mav.addAttribute("mList", members); 
    return "" + mav ; 
} 

view.jsp

function show_allMember() 
{ 
    $('.member_management_area').css('display','block'); 
    $('.member_management').css('color','#fe4978'); 

    $.ajax 
    ({ 
     type: 'GET', 
     url: 'http://localhost:8080/rachelivf/show_allMember.do', 
     dataType:'JSON', 
     success: function(response) 
     { 
      alert('success'); 
      $.each(response.mList, function(index, value) 
      { 

      }); 
     }, 
     error: function(xhr,ajaxOptions,thrownError) 
     { 
      alert('error'); 
      if(xhr.status == 404) 
     { 
       alert(thrownError); 
     } 
     } 
    }); 
} 

プロジェクトを実行すると、ステータスは200倍です。

[ネットワーク]タブでは、値もヘッダーとプレビューに表示されます。

しかし、それは

は、私の知る限りでは、データ型が一致しない...エラーではなく、成功に陥ります。エラーになりました。

私は正しいですか?私が正しいとすればどうしたらいいですか?

+1

リクエストが機能するが、応答の形式がjQueryに期待しているものと一致しない場合、この動作が発生します。あなたの場合、これは応答が有効なJSONではないことを意味します。コンソールの[ネットワーク]タブを確認して返信先を確認してください –

+1

クライアント側でjsonデータが必要です(例:ajax 'dataType: 'JSON'、')が、サーバーからjsonデータを送信していません。 –

+1

メンバオブジェクトのヌルチェックを追加します。200を返すことは、バックエンドまたはJavaコードではなく、成功のためのネットワークリクエストを意味します。 –

答えて

1

お使いのコントローラのコード内のNULLチェックを追加してください:

@RequestMapping(value="show_allMember.do",produces = MediaType.APPLICATION_JSON_UTF8_VALUE,method = RequestMethod.GET) 
public @ResponseBody String memberList(Model mav) 
{ 
    List<HashMap<String, Object>> members = aService.getMemberList(); 
    if(members!=null){ 
    mav.addAttribute("mList", members); 
    return "" + mav ; 
    }else{ 
     return "denied.jsp"; 
    } 
} 

は、あなたのjqueryのコードでこのJSPコードを処理します。

関連する問題