首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Ajax >

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

2013-11-14 
struts2+jquery+ajax+json为什么$.post回调函数无法执行如下是我的代码:js:$(function() {$(#look).clic

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";
        

热点排行