【问题标题】:How to get data(JSONObject) returned from an action class in jsp using ajax如何使用ajax从jsp中的动作类返回数据(JSONObject)
【发布时间】:2013-11-19 05:08:53
【问题描述】:

我正在尝试使用 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));->当它成功时,这条线没有执行,在这条线到来之前发出警报,但在这条线之后我放了没有显示的警报。

【问题讨论】:

标签: java ajax jsp struts2


【解决方案1】:

错误在这里

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);
}

【讨论】:

  • 谢谢我都试过了 var obj = jQuery.parseJSON(data);和 var obj = eval(data);但是第二个警报根本没有执行
  • 我的动作类方法是否正确..我将数据放入 JSONObject 的位置
  • @Frisch,在使用 var obj = jQuery.parseJSON(data); 之后你能帮我吗?我提醒了数据,里面什么都没有..
  • 听起来您没有收到任何数据回复;检查您调用的网址是否正确。也许使用 fiddle2 或萤火虫?另外,我发现 console.log 比 alert 更容易使用。
【解决方案2】:

如果你想在 struts 中返回 json, 你 struts.xml 必须设置结果的 type = json,像这样:

    <action name="checkStatusAndNumRecs" class="com.mxui.checkStatusAndNumRecsAction" method="execute">
        <result name="SUCCESS" type="json"></result>
    </action>

【讨论】:

  • 谢谢我更新了struts,xml根据这个也一样,第二个警报没有到来??
  • 你能告诉我我发布的动作类执行方法是否正确
猜你喜欢
  • 2013-12-06
  • 1970-01-01
  • 1970-01-01
  • 2013-10-24
  • 1970-01-01
  • 1970-01-01
  • 2016-10-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多