我正在尝试使用Ajax在JSP中获取Json对象数据。 我有动作类,我将数据放在Json对象中,并返回成功,如下所示:
public String execute()
{
JSONObject obj = new JSONObject();
System.out.println("here inside action-------------");
PersistenceService svc = PersistenceServiceImpl.getInstance();
status = svc.getStatusByFileId(fileId);
System.out.println("status is "+status);
numRecords = svc.getNumRecordsByFileId(fileId);
System.out.println("num records are "+numRecords);
obj.put("status", status);
obj.put("records", numRecords);
System.out.print("json data is "+obj);
return "SUCCESS";
}
我的jsp ajax是:
$(document).ready(function(){
$("#refresh").click(function(){
var fileId=id;
alert("ajax id is "+fileId);
$.ajax({
type:'post',
url:'checkStatusAndNumRecs',
dataType:'json',
data:{fileId:fileId},
success:function(data)
{
alert("data is :"+data); ->first alert
var obj = jQuery.parseJSON(eval(data));
alert("after parsing"); ->second alert
$("#div1").html(obj.status);
$("#div2").html(obj.records);
},
error:function(data)
{
$("#div1").html("It was a failure !!!");
}
});
});
});
这是我的struts.xml
这个ajax动作:
<action name="checkStatusAndNumRecs" class="com.mxui.checkStatusAndNumRecsAction" method="execute">
<result name="SUCCESS">statusnrecs.jsp</result>
</action>
问题有时会成功,很多时候会出错,
和var obj = jQuery.parseJSON(eval(data));
- &gt;这条线在成功时没有执行,在此线路到来之前发出警报但在此线路之后我已经放置了未显示的警报。
答案 0 :(得分:0)
错误在这里
var obj = jQuery.parseJSON(eval(data));
使用
var obj = jQuery.parseJSON(data); //probably better
或
var obj = eval(data); //older
不是两个。此外,您可以尝试
try {
obj = jQuery.parseJSON(data);
} catch (e) {
console.log(e);
}
答案 1 :(得分:0)
如果你想在struts中返回json, struts.xml必须设置result的type = json,如下所示:
<action name="checkStatusAndNumRecs" class="com.mxui.checkStatusAndNumRecsAction" method="execute">
<result name="SUCCESS" type="json"></result>
</action>