ajaxfileupload 始终不执行success 只执行error方法;SyntaxError: expected expression, got '<

来源:互联网 发布:山特维克刀具数据 编辑:程序博客网 时间:2024/06/10 15:31

本文出自:http://blog.csdn.net/bossin2014/article/details/45026381

用ajaxFileUpload实现图片上传,图片已经成功上传,json也有返回,xml也正确配置。但是在jsp中ajaxFileUpload始终执行error方法。

用来碰巧将ajaxFileUpload 中的error方法改写成以下的样子(如果您已知道您报的是什么错,请无视这一部分。只是写给跟我一样的很白很白的小白)

[javascript] view plaincopy
  1. error:function(data,status,e){  
  2.           alert(e);  
  3.      }  



再次执行后,出现上面的窗口。这下可开心了。因为之前问度娘说为何总是执行error时,得到的答案不是说jquery版本太高了,要1.4.2以下才能;不然就说是ajaxFileUpload源文件中要怎么怎么改。附上图,也许对你有用



针对  SyntaxError: expected expression, got '<    这个错误,我搜索到两篇文章,虽然不能直接解决我的问题,但也间接解决了我的问题。也许对你也有用

http://liwx2000.iteye.com/blog/1540321

http://witcheryne.iteye.com/blog/406574

看了第二篇文章后,我也开始用firebug 跟踪数据: 在error方法中添加console.info(data);

这是action返回给jsp的:


这是Firefox中看到的


看!果然也是因为多了<pre></pre>标签

这下就好办了,只要把标签去掉就行。去掉标签的方法上面两篇文章都有。因此不多说。我是按第二篇文章的方法处理的。

下面是代码

js

[javascript] view plaincopy
  1. function ajaxFileUpload(){  
  2.     $.ajaxFileUpload({  
  3.             url:"<%=path%>/file/imageupload.action?imgtype=lecturer",  
  4.             secureuri:false,  
  5.             dataType:"json",  
  6.             fileElementId:"uploadFile",  
  7.             success:function(data,status){  
  8.             console.info("3333333"+ data);  
  9.                                  
  10.             if(data.flag==true){  
  11.             alert(data.msg);  
  12.                     $('#uploadDialog').dialog('close');  
  13.                 }else{  
  14.                     alert(data.msg);  
  15.                     $('#uploadDialog').dialog('close');  
  16.                 }  
  17.             },  
  18.             error:function(data,status,e){  
  19.                 console.info("1111111"+data);  
  20.                 alert(e);  
  21.             }  
  22.         });  
  23.    }  

ajaxFileUpload.js

[javascript] view plaincopy
  1.  uploadHttpData: function( r, type ) {  
  2.      var data = !type;  
  3.      data = type == "xml" || data ? r.responseXML : r.responseText;  
  4.      // If the type is "script", eval it in global context  
  5.      if ( type == "script" )  
  6.          jQuery.globalEval( data );  
  7.      // Get the JavaScript object, if JSON is used.  
  8.      if ( type == "json" ) {  
  9.         //以下是新增的代码  
  10.     if(data.indexOf('<pre>') != -1) {  
  11.              data = data.substring(5, data.length-6);  
  12. }   
  13.     //以上是新增的代码  
  14.          eval( "data = " + data );  
  15.      }  
  16.      // evaluate scripts within html  
  17.      if ( type == "html" )  
  18.          jQuery("<div>").html(data).evalScripts();  
  19. //alert($('param', data).each(function(){alert($(this).attr('value'));}));  
  20.      return data;  
  21.  }  

这里做新增代码处理即可,其他的不用改变

FileAction

[java] view plaincopy
  1. public class FileAction extends ActionSupport{  
  2.     private static final long serialVersionUID = 8224125473579297368L;    
  3.       
  4.     private File file; //上传的文件  
  5.     private String fileFileName; //上传的文件名  
  6.     private JSONObject resultObj = null;  
  7.   
  8.     public String imageupload() throws Exception {  
  9.         //这里实现上传图片功能  
  10.         String path = null;  
  11.         String message = null;  
  12.         boolean flag = false;  
  13.         JSONObject json = new JSONObject();  
  14.         json.put("msg", message);  
  15.         json.put("path", path);  
  16.         json.put("flag", flag);  
  17.         setResultObj(json);  
  18.         return SUCCESS;  
  19.     }  
  20.       


这里的resultObj不能定义为String,也就是说不能向前台传json字符串,否则data.flag即使是true,data.flag==true也不会成立

struts.xml

[html] view plaincopy
  1. <span style="font-size:18px;">    <package name="file" extends="json-default" namespace="/file">  
  2.         <action name="imageupload" class="com.bossin.common.action.FileAction" method="imageupload">  
  3.             <result  name="success" type="json">  
  4.                  <param name="root">resultObj</param>  
  5.             </result>  
  6.         </action>  
  7.     </package></span>  
1 0
原创粉丝点击