ajax提交一定需要Servlet来接吗?

lfssay 2010-08-17 09:45:48
最近写struts2 的时候用到了异步提交 里面出现个问题: ajax提交一定需要Servlet来接吗?

我试了下用Action来接 暂时还没成功!

请教各位大吓哈
...全文
281 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
lfssay 2010-08-21
  • 打赏
  • 举报
回复
谢谢各位了
这个问题已经解决

在ajax异步接收的时候,,只要相应的Action里面相关参数提供getter setter 方法 不需要发送接收等操作

然后在struts.xml 的action 标签属性里面 加上 type="json"
<param name="includeProperties"></param>
当然json这个result得提前写好
饭炒蛋2009 2010-08-18
  • 打赏
  • 举报
回复
action也可以的啊
宁静-夏天 2010-08-18
  • 打赏
  • 举报
回复
楼主的这边的Ajax是针对的web的Ajax,Ajax无非异步请求,Web的Ajax无非是浏览器向服务器服务端口发送了一次http的异步请求。浏览器同时等待服务端的response流,并将流展现到view的变化中。

所以只要能解析http协议的服务都可以为之提供服务,即能答复请求。

在答复能力上,完全可以把Ajax的身份摒弃,完全当做普通HTTP请求来看。


Web 容器通过部署在其中服务回应请求。那么回顾http请求的声明周期,不难看出.

----------------------------
request -> filter -> servlet -> filter -> response
----------------------------

Action 只不过是MVC模式中分出来的东西。关键的东西只有servlet 和 filter 而已。

例如: Struts2便有 servlet 和 filter 驱动两种模式。

luozhangwen 2010-08-18
  • 打赏
  • 举报
回复
如果你是用的servlet就不要跳转. 同理你使用action就return null; 或者不跳转
niu90 2010-08-18
  • 打赏
  • 举报
回复
路径写对,可以请求任何东西。
lizhongyi188 2010-08-18
  • 打赏
  • 举报
回复
不用 dwr就不需要!
blliy117 2010-08-18
  • 打赏
  • 举报
回复
ajax的请求和你平时请求没什么区别的,
比如你平时没用用xxx.action去后台请求,那用ajax也用xxx.action没有什么区别的!
取不到数据的原因可能是你前台没写好!

ajax难度就在于 用的是js,由于浏览器之间的不一样,js也会相对不一样,比较麻烦一点!其实原理很简单!
wangguojunmy 2010-08-18
  • 打赏
  • 举报
回复
不一定啥。。
  • 打赏
  • 举报
回复
struts完全可以支持ajax的异步请求
xiaotugege 2010-08-18
  • 打赏
  • 举报
回复
当然。前提是extjs一类的东东,如果没有使用任何框架,那就只需要你把信息${message}在jsp页面就可以了。
xiaotugege 2010-08-18
  • 打赏
  • 举报
回复
唉。struts最后会跳转到那个页面去?童鞋,是view层!在view层写啥?是一个json!{....}具体咋写。还是自己找找吧。
咋个办呢 2010-08-18
  • 打赏
  • 举报
回复
struts2 的action很好的地支持ajax的异步请求的,你可能是因为访问地址写错了吧!
web158 2010-08-18
  • 打赏
  • 举报
回复
可!
配置对了,能找到就行
chinasb 2010-08-18
  • 打赏
  • 举报
回复
js:

var xmlHttp;
var viewModel;//需要显示的区块
//建立异步处理对象
function createXMLHttpRequest() {
xmlHttp = false;
//开始初始化XMLHttpRequest对象
if(window.XMLHttpRequest) { //Mozilla 浏览器
xmlHttp = new XMLHttpRequest();
if (xmlHttp.overrideMimeType) {//设置MiME类别
xmlHttp.overrideMimeType('text/xml');
}
}
else if (window.ActiveXObject) { // IE浏览器
try {
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
if (!xmlHttp) { // 异常,创建对象实例失败
window.alert("不能创建XMLHttpRequest对象实例.");
return false;
}
}
//请求页面更换
function requestMain(model,url)
{
createXMLHttpRequest();
viewModel=model;
document.getElementById(model).innerHTML="<div id='loading'>正在加载...</div>";
url=url+time="+new Date().getTime();
xmlHttp.open("GET", url, true);
xmlHttp.onreadystatechange = viewMain;
xmlHttp.send(null);
}
function viewMain()
{
if (xmlHttp.readyState == 4)
{
if (xmlHttp.status == 200)
{
setTimeout("viewContent()", 800); }
}
}
//显示模块
function viewContent()
{
document.getElementById(viewModel).innerHTML=xmlHttp.responseText;
}


html:

<div id="view"></div>
<a href="javascript:void(0)" onClick="requestMain('<s:url action="HelloAction?Msg=Hello World.">',view)">Action</a>
<a href="javascript:void(0)" onClick="requestMain('<s:url action="HelloAction?Msg=test ok.">',view)">Action</a>


action:

HttpServletRequest request = ServletActionContext.getRequest();
String Message = request.getParameter("Msg");


基本上就是这样
Ade子夜 2010-08-17
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 xianaofei 的回复:]
这个要在struts.xml中配置的 还有就是响应的格式如JSON
[/Quote]
描述在细些!!
xianaofei 2010-08-17
  • 打赏
  • 举报
回复
这个要在struts.xml中配置的 还有就是响应的格式如JSON
UPC_思念 2010-08-17
  • 打赏
  • 举报
回复
struts2很好的支持ajax,有很多标签可以用得,网上找个例子看看
亲努力啊 2010-08-17
  • 打赏
  • 举报
回复
网上大把的是
亲努力啊 2010-08-17
  • 打赏
  • 举报
回复
这个很简单吧
lfssay 2010-08-17
  • 打赏
  • 举报
回复
说明白点啊。。。。

比如说 来个小例子之类的
加载更多回复(1)

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧