Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用ajax从jsp中的操作类返回数据(JSONObject)_Java_Ajax_Jsp_Struts2 - Fatal编程技术网

Java 如何使用ajax从jsp中的操作类返回数据(JSONObject)

Java 如何使用ajax从jsp中的操作类返回数据(JSONObject),java,ajax,jsp,struts2,Java,Ajax,Jsp,Struts2,我试图使用Ajax在JSP中获取Json对象数据。 我有一个action类,将数据放入Json对象,并返回成功,如下所示: public String execute() { JSONObject obj = new JSONObject(); System.out.println("here inside action-------------"); PersistenceService svc = PersistenceServiceImpl.getInstanc

我试图使用Ajax在JSP中获取Json对象数据。 我有一个action类,将数据放入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 !!!");
            }
        });
    });
});
这是我对这个ajax操作的
struts.xml

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

statusnrecs.jsp
问题是有时候它会成功,很多时候它会出错, 和
var obj=jQuery.parseJSON(eval(data))->当这一行成功时,它不会执行,在这一行到来之前发出警报,但在这一行之后我发出了没有显示的警报。

错误在这里

var obj = jQuery.parseJSON(eval(data));
使用其中一个

var obj = jQuery.parseJSON(data); //probably better

不是两者都有。另外,你也可以试试

try {
  obj = jQuery.parseJSON(data);
} catch (e) {
  console.log(e);
}

如果你想在struts中返回json, 必须将result的type=json设置为struts.xml,如下所示:

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


谢谢,我尝试了var obj=jQuery.parseJSON(数据);var obj=评估(数据);但是第二个警报根本没有执行我的action类方法正确吗..我把数据放在哪里JSONObject@Frisch,在使用var obj=jQuery.parseJSON(data)之后,您能在这方面帮助我吗;我提醒了data,这里面什么都没有..听起来你没有收到任何关于数据的回复;检查您正在调用的url是否正确。也许使用fiddle2或firebug?另外,我发现console.log比alert更容易使用。谢谢我更新了struts,xml根据这个也一样,第二个警报不会出现??你能告诉我我发布的action类执行方法是正确的吗
    <action name="checkStatusAndNumRecs" class="com.mxui.checkStatusAndNumRecsAction" method="execute">
        <result name="SUCCESS" type="json"></result>
    </action>