情况:1
<script type="text/javascript" src="scripts/jquery-1.4.4.js"></script>
<script type="text/javascript">
$(function()
{
$("#button1").click(function()
{
$.ajax({
type: "POST",
url: "MyServlet",
dateType: "html",//json是另一种'json'
data: {'param1': $("#param1").val(), 'param2': $("#param2").val()},
success: function(returnedData){//returnedData是html,json,xml主要
$("#result").val(returnedData);
}
});
});
});
</script>
</head>
<body>
<input type="text" id="param1">+
<input type="text" id="param2">=
<input type="text" id="result"> <input type="button" value="get content from server" id="button1">
情况:2
环境: jquery1.4 + struts2.0.14
页面:
HTML code
-
<
script
src
="jquery/jquery.js"
type
="text/javascript"
></
script
>
<
script
src
="jquery/jquery.json-2.2.js"
type
="text/javascript"
></
script
>
<
script
type
="text/javascript"
language
="javascript"
>
function
doAjax() {
$.ajax({
type:
"
post
"
,
url:
"
ajaxAction.action
"
,
cache:
false
,
dataType:
'
json
'
,
success:
function
(data) { alert($.evalJSON(data).info);},
error:
function
(){alert(
'
error
'
);}
});
}
</
script
>
后台:
Java code
-
public
class
AjaxAction
extends
ActionSupport {
@Override
public
String execute()
throws
Exception {
HttpServletResponse resp
=
ServletActionContext.getResponse();
//
resp.setContentType("application/json;charset=utf-8");
resp.getWriter().write(
"
{total:100,info:\"ttttttttt\"}
"
);
return
NONE;
}
}
问题: 如果在ajax配置项中去掉dataType属性就可以请求成功, 如果设置了dataType=json的情况下就始终执行
error 对应的函数;
我在网上搜索了两个小时,共有如下两种解决方案:
1. 集成struts2的 json-plugin 插件 (google出品), 经过测试:【成功】
2. 改变ajax配置项的contentType为 "application/json" , 后台的response也设置 contentType = "application/json",
经过测试:【失败】
我现在想在不使用json-plugin的情况下,让上面代码中的配置项可以成功跳转到 success 函数。 如果可以顺便讲解一下jquery中ajax的这个dataType的意义,就更好了。。我看jquery源码中的 ajax 函数,没怎么看
明白。。
请各位大虾支点招。谢谢。