日期:2014-05-16  浏览次数:20338 次

使用jQuery ajax文件上传ajaxfileupload组建碰到的问题:返回json带有pre标记的解决方案

开发货比百家购物搜索的后台,增加文件异步上传的功能,前端使用的js组建是jquery,曾经使用过ajaxfileupload,直接使用,碰到了个问题:

返回jason格式的数据报了错。于是,firebug下跟踪下,结果如下:


结果是正常的。

检查下spring servlet的配置,也没有错。
??? <bean
?? ??? ?class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
?? ??? ?<property name="defaultContentType" value="application/json" />
?? ??? ?<property name="mediaTypes">
?? ??? ??? ?<map>
?? ??? ??? ??? ?<entry key="json" value="application/json" />
?? ??? ??? ??? ?<entry key="html" value="text/html" />
?? ??? ??? ?</map>
?? ??? ?</property>
?? ??? ?<property name="viewResolvers">
?? ??? ??? ?<list>
?? ??? ??? ??? ?<bean class="org.springframework.web.servlet.view.BeanNameViewResolver" />
?? ??? ??? ??? ?<bean
?? ??? ??? ??? ??? ?class="org.springframework.web.servlet.view.InternalResourceViewResolver">
?? ??? ??? ??? ??? ?<property name="viewClass"
?? ??? ??? ??? ??? ??? ?value="org.springframework.web.servlet.view.JstlView" />
?? ??? ??? ??? ??? ?<property name="prefix" value="/jsp/" />
?? ??? ??? ??? ??? ?<property name="suffix" value=".jsp" />
?? ??? ??? ??? ?</bean>
?? ??? ??? ?</list>
?? ??? ?</property>
?? ??? ?<property name="defaultViews">
?? ??? ??? ?<list>
?? ??? ??? ??? ?<!-- 输出为JSON数据 -->
?? ??? ??? ??? ?<bean
?? ??? ??? ??? ??? ?class="org.springframework.web.servlet.view.json.MappingJacksonJsonView">
?? ??? ??? ??? ?</bean>
?? ??? ??? ?</list>
?? ??? ?</property>
?? ?</bean>

接着分析下ajaxfileupload源代码,ajaxfileupload 是创建了个iframe,来实现异步上传文件,firebug看下iframe的内容,发现莫名其妙的加上了<pre>,难怪导致解析json数据发生错误。

?

继续看源代码,最下面发现:

if ( type == "json" )
??????????? eval( "data = " + data );

改成:

??????? if ( type == "json" ){
?????? ??? ?data = jQuery.parseJSON(jQuery(data).text());
??????? }

OK,如此问题就解决了。

比较购物网站 :http://www.huobibaijia.com/ 。研究比较购物技术,感兴趣的朋友QQ联系。

QQ:909546261

?

?本文为原创,雷同者均为抄袭,可以转载作为学习研究或备份所用,本人保留一切权利,转载请注明出处。

原文:http://emeifeng.iteye.com/blog/1307506