欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

struts2+jquery+ajax+json为何$.post回调函数无法执行

更新时间: 2014-01-05 01:53:56 责任编辑: Author_N1

 

struts2+jquery+ajax+json为什么$.post回调函数无法执行
如下是我的代码:
js:

$(function() {

$("#look").click(function() {
alert("look");
var url = "json.action";
var params = {
name : "kobe"
};
$.post(url, params, function(data) {
alert("post");//此句一直没反应
$("#result").text("后台来的数据");
}, "json");
});

});


Action:

public class jsonAction extends ActionSupport{

private String result;

@Override
public String execute() throws Exception {
// TODO Auto-generated method stub

// HttpServletResponse responce = ServletActionContext.getResponse();
// PrintWriter out = responce.getWriter();

System.out.println("后台");//此句已经执行

// out.println(result); 这一句测试过也不行
Map<String,String> map = new HashMap<String,String>();
map.put("name", "kobe");
map.put("age", "23");
JSONObject jo = JSONObject.fromObject(map);
result = jo.toString();

return SUCCESS;
}


public String getResult() {
return result;
}

public void setResult(String result) {
this.result = result;
}

}


struts.xml

    <package name="default" namespace="/" extends="json-default">

        <default-action-ref name="index" />

        <action name="index">
            <result>/index.jsp</result>
        </action>
        
        <action name="json" class="action.jsonAction">
         <result type="json">
         <param name="root">result</param>
         </result>
        </action>

    </package>


后台jsonAction 代码已经执行,因为控制台中输出“后台”

但是前台的$.post的回调函数总是不执行,alert("post");一直不执行。

我用的jar包如下:
commons-lang3-3.1.jar;
json-lib-2.3-jdk15.jar;
jsonplugin-0.34.jar;
ezmorph-1.0.6.jar;
commons-beanutils-1.8.0.jar;
commons-collections-3.2.1.jar

而且后台没有报任何错误,求高手指点,弄了很久,纠结死了。谢谢了
--参考方法--
猜测是你返回的json格式是怪异模式的,不是严格定义的json格式,并且你jq版本》=1.4,这样不会执行success回调,虽然你动态页没错误。可以参考 jQuery dataType指定为json的问题

修改成$.ajax调用,增加error回调测试下就知道了
        $("#look").click(function() {
            alert("look");
            var url = "json.action";
            var params = {
                name : "kobe"
            };
           /* $.post(url, params, function(data) {
                alert("post");//此句一直没反应
                $("#result").text("后台来的数据");
            }, "json");*/

$.ajax({
url:url,
type:'POST',
data:params,
success:function(){alert("post");$("#result").text("后台来的数据");},
error:function(xhr){alert('出错。。\n'+xhr.responseText);}//////
});
        });




--参考方法--
你将xml中的 <result type="json">改为<result name="success" type="json">

action 中的  return SUCCESS;改为return "success";
        
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 01:53:56
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/2748/
本文WWW.DOC100.NET DOC100.NET版权所有。