ajaxリクエストが返すデータはundefinedです

5305 ワード

  • ネット上で長い間探していたが、それらの方法は自分には役に立たなかった.いずれにしても、応答ヘッダを表示すると、応答タイプは常に「text/html;charset=utf-8」であり、「アプリケーション/json;charset=utf-8」は死活しないことがわかります.
  • 以降、私は文字出力ストリームWriterを捨て、バイト出力ストリームOutputStreamに変更し、問題の解決に成功しました.サーバ側コードは次のとおりです:
  • 
    
            ObjectMapper mapper=new ObjectMapper();
    
            //String string = mapper.writeValueAsString(introByName);
           // System.out.println(string);
            response.setContentType("application/json;charset=utf-8");
            mapper.writeValue(response.getOutputStream(),introByName);
            //response.getWriter().write(string);
            //request.getRequestDispatcher("index.jsp").forward(request,response);
    
  • フロントエンドコードは以下の通りで、コードが少ない:
  • <script>
            $(function ()//    
            {
    
                $("#intro_a").click(function ()// a        
                {
    
                    $.post("${pageContext.request.contextPath}/FindWaterQualityStationServlet",{"name":"      "},function (data)//      
                    {
                       alert(data.stationName);
    
                    });
    
                });
    
            });
    
        </script>
    

    4.その後、私はまた発見して、実は文字の出力ストリームを使うことができて、間違いの原因は“転送を要求します”です:
     request.getRequestDispatcher("index.jsp").forward(request,response);
    

    転送を要求するこの行のコードを削除すればいいです.したがって,転送コードのリクエストが問題の原因となる.
  • json解析器私がここで使っているのはjacksonです.一般的なjson解析器はJsonlib,Gson,fastjson,jacksonの4種類がある.点jacksonに必要なjarパッケージ
  • をダウンロードします.
  • javaオブジェクトをjsonに変換するには、①jarパッケージのインポート②ObjectMapperオブジェクトの作成③ObjectMapper関連メソッドを呼び出して変換する2つの方法があります.1つ目は、writeValue(パラメータ1,obj)パラメータ1には、File:objオブジェクトをJSON文字列に変換し、指定したファイルに保存する値があります.Writer:objオブジェクトをJSON文字列に変換し、jsonデータを文字出力ストリームに埋め込む.OutputStream:objオブジェクトをJSON文字列に変換し、jsonデータをバイト出力ストリームに埋め込む.

  • 2つ目:writeValueAsString(obj):オブジェクトをjson文字列に変換します.