解析AJAX响应中的JSON内容
我想解析JSP内的AJAX响应中的JSON内容。响应是对象列表。我无法读取单个变量。请查找附加的代码以供参考。解析AJAX响应中的JSON内容
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
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();
}
}
}
警报未弹出的名字这value.is正确的方式解析?还是代码中需要的任何更正?提前请求您的支持和感谢。
基本上从而改变你的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
意味着url编码,但您的意思是您的发送json contentType:"application/json;charset=utf-8"
。所以你需要决定是发送json还是url编码?我已经将它改为一个将被json编码的对象。
我已经尝试了你给出的代码。即使弹出窗口显示“未定义”。 – ashwin1587
:非常感谢代码works.As Baao提到,我不需要再解析它。此外我添加了您的代码。这是最终code.data:{PartCode:varPartCode}, \t \t \t ContentType:'json', (接受:“application/json; charset = utf-8”},成功:函数(json){alert(json [0] .name);}}} – ashwin1587
这是最后的工作code.Thanks所有
$.ajax({
type: "Post",
url: "submit",
data: {PartCode:varPartCode},
ContentType:'json',
headers: {Accept : "application/json;charset=utf-8"},
success: function(json){
alert(json[0].name);
}
});
你不需要解析响应数据对象,jQuery的已经做到了 – baao
这不是真正的entirly @baao但是,如果你发送的正确HTPT头并设置[dataType:json](http://api.jquery.com/jquery.ajax/),那么你应该得到一个对象不是一个字符串 – Liam
你应该使用contentType重载真正设置内容类型,而不是头部重载FYI – Liam