最近一个项目使用到了JQuery调用Struts2的Action返回的json数据,因为涉及到跨域的操作,所以选择对跨域操作已经做了很好兼容的getJson方法,但实际应用中发现前端也买年的jquery虽然可以调用后台Action类成功,但总是无法调用回调函数!
经过不断的查找,最终确定原因所在,原来跨域调用想要成功调用回调函数,必须是服务器端明确知道回调函数的地址,因此有两个必须的要素要注意:
1、调用的URL必须有callback=?,这个名字可以自己起,不一定叫这个,但是必须有
2、struts2的配置文件里,必须加上 <paramname="callbackParameter">jsoncallback</param>
这里面的这个回调参数名称,也好前端传过来的一致。
下面贴出我的使用到的代码片段:
前端页面:
$.getJSON('http://xxxxxxx.xhtml?'+$('#regForm').serialize()+"&jsoncallback=?", function(data) {
alert(data);
});
后端的struts-json.xml标定返回值部分,注意要包含在result段里
<result name="jsonres" type="json">
<param name="callbackParameter">jsoncallback</param>
</result>
其它的参照网上struts2对json数据的封装写法即可,最好采用annotion的那种方式
分享到:
相关推荐
这里,`getJsonResult`方法将被JSON插件调用,返回一个包含数据的Map,这些数据将在JSON响应中发送到浏览器。 为了使浏览器能够解析JSON,我们需要在JSP或HTML页面中使用JavaScript。可以使用JSON.parse()方法或者...
这样,当你在jQuery的AJAX请求中指定URL为`yourAction.action`时,Struts2会返回JSON格式的`data`对象。 3. **数据绑定和处理** 在jQuery的AJAX回调函数中,你可以接收到JSON响应,并将其数据绑定到DOM元素上。...
例如,使用jQuery的`$.ajax()`或`$.getJSON()`方法发起请求,设置URL指向Struts2的Action,并处理返回的数据。 3. **Struts2插件支持**:Struts2提供了Ajax插件,如`struts2-jquery-plugin`和`struts2-json-plugin`...
总的来说,这个压缩包提供了关于JSON和Struts 2的基础知识,涵盖了从数据交换格式到Web框架的使用,再到跨域通信的解决方案。对于想要踏入Web开发领域的初学者,这些资料无疑是宝贵的资源,可以帮助他们快速理解和...
例如,使用jQuery的`$.ajax()`或`$.getJSON()`,指定请求URL(对应Struts Action的路径)和成功回调函数,用于处理返回的JSON数据。 5. **处理返回数据**:在Ajax请求的回调函数中,解析返回的JSON数据,并根据需要...
7. **跨域问题**:如果jQuery.form.js与Struts 1.x不在同一个域下,可能需要处理跨域问题。这可能涉及修改Struts的配置,或者在服务器端添加允许跨域的响应头。 8. **安全考虑**:使用AJAX提交时,务必考虑安全性,...
3. **Ajax与Struts的结合**:在Struts中,Ajax请求通常会调用一个特定的Action,这个Action处理请求并返回部分HTML或JSON数据。JSP页面中的JavaScript代码负责发起Ajax请求,并接收和处理响应数据。 4. **创建Ajax...
1. **Struts Action与Ajax请求**:了解如何配置Struts Action来处理Ajax请求,包括设置Action的返回类型,以及处理JSON或XML格式的数据。 2. **JavaScript库**:使用如jQuery这样的库来创建Ajax请求,处理DOM操作和...
注意,由于文件上传的异步特性,实现进度条可能涉及到跨域问题,需要确保服务器端配置正确,允许跨域请求。此外,为了提高用户体验,我们还需要处理异常情况,比如网络中断、文件大小超过限制等。 总之,通过Struts...
在Struts中,我们可以创建一个专门处理AJAX请求的Action,该Action将根据请求参数执行相应的业务逻辑,并返回JSON或XML格式的数据。前端JavaScript代码接收到这些数据后,可以动态更新DOM(Document Object Model)...
项目使用SSH(Struts2 + Spring + Hibernate)架构,其中$.post请求的目标是一个Struts2 Action,该Action需要返回一个`Collection<Privilege>`对象。`Privilege`类与`User`类之间存在关联,即每个`Privilege`对象...
在实际应用中,可以使用一些库,如jQuery,它简化了JavaScript的DOM操作和Ajax调用,使得在Struts中集成Ajax变得更加简单。此外,还有一些专门为Struts设计的Ajax库,如DWR(Direct Web Remoting),它提供了一种...