场景:ajaxSubmit,json,struts2,提醒保存“json返回值”

ajaxSubmit,json,struts2,提示保存“json返回值”

问题回顾:

1.需求:jsp页面通过上传图片,后台对应action对图片做一些压缩,描边等处理后,将处理完的image返回到页面显示出来。

2.解决方案:采用ajaxSubmit提交,通过返回的json数据,将image填充到对应的

>>>>>>>>>>想看最终结果的直接下跳看标题5<<<<<<<<<<<<<<

遇到的几个问题:

假设

1.傻瓜式的认为,通过普通的ajax提交就能做到(代码如下)

$.ajax({

url:xxxx,

data:'upImage='+ $('#upImage').val(),

....

success:function(returnData){....}

})

错误点:后台得到的只是String值,并不是通过form序列化的File

2.将form 序列化以后 进行上传

$.ajax({

url:xxxx,

[color=red]data:$('#form1').formSerialize(),[/color]

....

success:function(returnData){....}

})

结果:不成功,打印了一下$('#form1').formSerialize(),发现里面没有对upImage数据,这个原因不明,希望看到这个的大神们给个解释,3Q

3.通过ajaxSubmit上传______第一步

需要的js

jquery.js

jquery.form.js

<1> js代码

$("#form1").ajaxSubmit( {

url : "previewImageDeal",

datatype : "json",

success : function(returnData){

...

},

error:function(){

alert('error');

}

});

<2>struts.xml代码

dealStatus,dealMsg,dImgPath

<3>java 代码

String dealStatus = null;

String dealMsg = null;

String dImgPath = null;

//图片处理

//给必要的变量赋值

js中的ajax方法,直接进的error.......无语

4.通过ajaxSubmit上传______第二步

参考网上的一些资料,在3的基础上将js中dataType:'json'去掉。strust.xml返回值类型仍然是json即

>>>成功进了 success方法

随后在success中打印了返回的结果 新的问题出现了

4.1 问题:success(retrunData)的returnData被一对

标签包住了

应对方法 :tong过js的replace方法将

去掉 得到的数据是期望的json格式;进一步的通过 var jasonData = eval('('+returnData+')'); ;然后业务逻辑处理

>>>在firfox下调试成功

转战ie.chrmo,新的问题又出现了

4.2 问题:在IE、Chrmo中都提示 是否下载“XXXXXXXXXXX” ,打开一看,是返回的json数据,我表示很无语

应对方法:上网查各种资料 。。。。。。。。没有一个完全匹配遇到的这个问题,但是,通      过网上的讨论可以定位问题所在

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

之所以会出现下载,是因为struts中对json的理解是 application/json ,而ajaxSubmit是提交的表单(虽然只需要对表单中的file处理),对应的action对表单数据处理之后通过struts.xml的重定向,导致了提示“下载json”

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

5.通过ajaxSubmit上传______第三步

吐血应对方法,参考了网上各家资料,最后终于跑通了,中间的曲解就不记录了,只记录一下对的东西,写到这里我想起了一句话,“遇到问题的时候是求助于前辈们,还是自己查资料解决”,此时我感觉自己查资料印象更深刻,所以希望看到的朋友们,遇到问题的时候千万不要不假思索的就去问别人,找人帮忙写代码,解决问题的过程能让自己对一些东西有更深层次的理解,这个在求助于别人的时候是得不到。

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

5.1 java中关键代码

private JSONObject returnData = null;

//这个到底有没有用,还不知道,有点疲劳,不想做实验了

response.setContentType("text/xml;charset=utf-8");

//将返回结果保存到map中,然后转成json

Map map = new HashMap();

map.put();

map.put();

map.put();

returnData = JSONObject.fromObject(map);//转JSON

response.getWriter().print(returnData );//打印

5.2 xml关键部分

text/html

returnData

5.3 js关键部分

[color=red]说明:java中通过print打印了想要的json结果,struts.xml中又通过includeProperties强行收留了returnData,所以在js的success方法中会看到两个json结果块。为什么要includeProperties呢,因为不加includeProperties标签或者加空标签()会得到一大大大大堆不想要的结果,看着就烦,而且还消耗系统和网络资源[/color]

$("#form1").ajaxSubmit( {

url : "action名字",

//datatype : "json",//彻底注释掉

success : function(returnData){

returnData = returnData.substring(0,returnData.indexOf('}')+1);//只要print的json结果

var isWindow = false;

//window系统路径是"\" 要进行转换 linux不需要转换

if(returnData.indexOf('\\\\') >= 0){

isWindow = true;

//将路径中的"\"替换,不然parseJSON会出错

returnData = returnData.replace(/\\\\/g,'_');

}

var jsonData = jQuery.parseJSON(returnData);

if(jsonData.dealStatus == '0'){

//错误处理

alert(jsonData.dealMsg);

$('#upImage').val('');

$('#previewTR').css({"height":"0px"});

$('#previewDiv').html('');

}else{

//成功处理图片

var tempImagPath = jsonData.previewImagePath ;

var finalImagePath = jsonData.finalImagePath ;

if(isWindow){//window系统将"_"再转换成"/"

tempImagPath = tempImagPath.replace(/_/g,'/');

finalImagePath = finalImagePath.replace(/_/g,'\\');

}

$('#finalImagePath').val(finalImagePath);

$('#previewTR').css({"height":jsonData.previewHeight+'px'});

$('#previewDiv').html('' );

}

}

});

ajax提交form返回数据格式,ajaxSubmit 返回值相关推荐

  1. Ajax提交form表单总是返回error函数

    这是ajax代码 function saveUser() {$.ajax({type:"POST",url:"SaveUser.action",data:$(' ...

  2. # Ajax提交Form表单以及后端取值(java)

    Ajax提交Form表单以及后端取值(java) 1.ajax提交form表单:提交的按钮οnclick="denglu()"时候触发ajax方法 <script>fu ...

  3. 使用ajax提交form表单,包括ajax文件上传 转http://www.cnblogs.com/zhuxiaojie/p/4783939.html...

    使用ajax提交form表单,包括ajax文件上传 前言 使用ajax请求数据,很多人都会,比如说: $.post(path,{data:data},function(data){... },&quo ...

  4. 学习日志day45(2021-09-09)(1、有道翻译API使用json格式数据 2、JSONP 3、Ajax提交form表单 4、Web Uploader)

    学习内容:学习JavaWeb(Day45) 1.有道翻译API使用json格式数据 2.JSONP 3.Ajax提交form表单 4.Web Uploader 1.有道翻译API使用json格式数据 ...

  5. 通过php jq ajax 提交form表单

    参考http://www.php100.com/html/webkaifa/PHP/PHPyingyong/2013/0619/13568.html html <div id="con ...

  6. ajax 表单提交传文件,Ajax提交Form表单及文件上传

    刚刚申请下来的博客,写得第一篇.有点小激动,本人以前是一名工业3D设计师突然有些变故做上了JavaWeb开发: 前几天,发现了一些小问题.我在写后台管理页面时,需要上传一张图片.于是我就用很普通的Fo ...

  7. ajax提交form表单到php,ajax如何提交form表单数据?ajax提交form表单数据的方法介绍...

    对于form表单数据的提交,我们一般都会想到使用ajax提交,那么,ajax如何来提交form表单数据呢?接下来的这篇文章就来给大家来介绍关于ajax提交form表单数据方法,有需要的伙伴可以参考一下 ...

  8. ajax提交form表单方法

    ajax提交form表单方法 由 driventokill 创建,Alma 最后一次修改 2018-04-23 15:46:20 ajax提交form表单,这在日常项目中是经常用到的.前台无论是简单的 ...

  9. form表单提交以及用Jquery实现ajax提交form表单

    在form标签中添加Action(提交的地址)和method(post),且有一个submit按钮(<input type='submit'>)就可以进行数据的提交,每一个input标签都 ...

  10. 使用原生javascript实现ajax提交form表单

    使用原生javascript实现ajax提交form表单 ============================ 1 准备表单        首先我们需要编写一个html代码,这里我是采用nodej ...

最新文章

  1. Shiro源码学习之二
  2. [数据结构] 时间复杂度计算
  3. 自定义 VIEW 截图 保存到图库 并分享
  4. leetcode || 50、Pow(x, n)
  5. C++ operator 知识点
  6. CVPR 2019 | Stereo R-CNN 3D 目标检测
  7. 牵手大众、现代,滴滴绯闻“女友”Aurora无人车启动商业化
  8. css 列表属性详细总结
  9. 使用axios 报 name.toUpperCase is not a function
  10. activemq 下载以及安装、应用
  11. 数字经济的网络黑手,中科信安:勒索软件攻击比去年同期增加7倍
  12. golang GC机制
  13. Heartbeat配置方案
  14. 磁盘被写保护,请去掉写保护或另一张磁盘
  15. vue-cli从2升级到3报错error 404 Not Found: @wry/context@^0.4.0
  16. 计算机辅助翻译专业院校,中国翻译学专业高校排名
  17. 小游戏——扫雷(可以标记)
  18. Win10 64位+VS2015+Opencv3.3.0安装配置
  19. C++ 算法设计与分析 地图着色问题(中国+美国)
  20. 解决css使用align-items文字与数字对齐不了问题

热门文章

  1. PN序列的产生以及相关函数的计算
  2. h5项目打包为app
  3. 【ENVI | Landsat 8】预处理—辐射校正定标
  4. 电缆直径和电缆流过电流计算以及对照表
  5. Oracle 同音字查询,汉字的演变过程100字,汉字的演变图片
  6. matlab晶闸管不能连接,基于MATLAB的晶闸管触发电路.doc
  7. 计算机蓝屏 代码0000a,win7 64位系统蓝屏代码0x0000000a的原因及解决方法
  8. 高数 吉米多维奇 785
  9. 解决maven打包 错误: 程序包com.sun.istack.internal不存在 - BBSMAX
  10. 计算机二级公共基础知识(四)—— 数据库设计基础