2016-09-06 15 views
0

JSP内のAJAX応答でJSONコンテンツを解析しようとしています。応答はオブジェクトのリストです。私は個々の変数を読むことができません。あなたの参照のための添付コードを見つけてください。JSONコンテンツのAJAX応答の解析

JsonTest.jsp

<html> 
<head> 
<script type="text/javascript" src="js/jquery-1.4.2.min.js"></script> 
</head> 
<body> 
COMPONENT CODE : <input name="PartCode" id="PartNo" type="text" /> 
<br><br> 
COMPONENT DESCRIPTION : <input name="desc" id ="Description" value=''> 
<br><br> 
QUANTITY : <input name="qty" id="Quantity" type="text" value=""/> 
<script type="text/javascript"> 
$('#PartNo').keypress(function(event){ 
var keycode = (event.keyCode ? event.keyCode : event.which); 
if(keycode == '13'){ 
    varPartCode = $('#PartNo').val(); 
    $.ajax({ 
      type: "Post", 
      url: "submit", 
      data: "PartCode="+varPartCode, 
      headers: {Accept : "application/json;charset=utf-8","Content-Type":"application/json;charset=utf-8"}, 
      success: function(json){ 
       var rep = JSON.parse(json); 
       alert(rep.name); 
      }     
      }); 
} 
}); 
</script> 
</body> 
</html> 

TestBean.java

package test.json.MyJsonCode; 

public class TestBean { 

private String name; 
private String desc; 
public String getName() { 
    return name; 
} 
public void setName(String name) { 
    this.name = name; 
} 
public String getDesc() { 
    return desc; 
} 
public void setDesc(String desc) { 
    this.desc = desc; 
} 
} 

code1.java

アラートが名前をポップアップされていない

は、これは正しい方法へのvalue.is

package test.json.MyJsonCode; 
import java.io.IOException; 
import java.io.PrintWriter; 
import java.util.ArrayList; 
import java.util.List; 
import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import org.json.JSONException; 
import org.json.JSONObject; 
import com.google.gson.Gson; 
public class Code1 extends HttpServlet { 
private static final long serialVersionUID = 1L; 

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    try { 
    response.setContentType("application/json"); 
    response.setCharacterEncoding("utf-8"); 
    List<TestBean> testList = new ArrayList<TestBean>(); 
    TestBean test = new TestBean(); 
    test.setDesc("description1"); 
    test.setName("name1"); 
    testList.add(test); 
    TestBean test2 = new TestBean(); 
    test2.setDesc("description2"); 
    test2.setName("name2"); 
    testList.add(test2); 
    Gson gson = new Gson(); 
    System.out.println("inside code1 class"); 

    String jsonList = gson.toJson(testList);  
    System.out.println("json data"+jsonList); 
    response.getWriter().write(jsonList); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 
} 
コード内で必要な修正や解析を行うことができますか?あなたのサポートを依頼し、事前に感謝します。

+0

最終作業code.Thanksで、jQueryのは、すでに – baao

+0

entirly真@baaoはないことということでしたが、あなたは正しいHTPTヘッダを送信する場合[dataType:json](http://api.jquery.com/jquery.ajax/)を設定すると、文字列ではなくオブジェクトを取得する必要があります – Liam

+0

実際にコンテンツタイプを設定する必要があります。contentTypeオーバーロードはヘッダーオーバーロードではなくFYI – Liam

答えて

-1

は、基本的にはそのため、あなたのAJAX呼び出しを変更:

$.ajax({ 
     type: "Post", 
     url: "submit", 
     data: {PartCode:varPartCode}, 
     contentType:"application/json;charset=utf-8", 
     dataType:'json' 
     //not sure why you need this but I've left it in 
     headers: {Accept : "application/json;charset=utf-8"}, 
     success: function(json){ 
      alert(json.name); 
     }     
     }); 

あなたが実際にあまりにも(当然)JSONを返すことを確認してください。

このセクション"PartCode="+varPartCodeは、あなたの送信json contentType:"application/json;charset=utf-8"をあなたの言うことを意味します。だから、あなたはjsonやURLをエンコードして送るのを決定する必要がありますか?私はそれをjsonエンコードされるオブジェクトに変更しました。

+0

私はあなたが与えたコードを試しました。 – ashwin1587

+0

:ありがとうコードが動作します。Baaoが言及したように、私は再度解析する必要はありません。また、私はあなたのコードを追加しました。これは最終的なcode.data:{PartCode:varPartCode}、 \t \t \t ContentType: 'json' \t \t \tヘッダー{accept: "application/json; charset = utf-8"}、成功:function(json){alert(json [0] .name);} – ashwin1587

0

このレスポンス・データ・オブジェクトを解析する必要はありませんすべて

$.ajax({ 
      type: "Post", 
      url: "submit", 
      data: {PartCode:varPartCode}, 
      ContentType:'json', 
      headers: {Accept : "application/json;charset=utf-8"}, 
      success: function(json){ 
       alert(json[0].name); 
      }     
      });