JSON

jQuery.iframe-Transport.js来发送Ajax文件上传请求对返回JSON的处理

字号+ 作者:H5之家 来源:H5之家 2017-06-21 08:14 我要评论( )

jQuery.iframe-Transport.js来发送Ajax文件上传请求对返回JSON的处理

本文测试环境 jQuery 2.1.4

使用 jQuery.iframe-Transport.js (是一个jQuery插件)来发送Ajax文件上传请求时,服务器接口返回的是JSON数据,而测试的时候发现,Ajax请求后的结果却是一个HTML片段,服务器的JSON会包含在一个 <pre> 元素里,类似这样:

<head></head><body><pre style=\"word-wrap: break-word; white-space: pre-wrap;\">{\"ret\":1,\"msg\":\"文件大小超过限制\"}</pre></body>

原来必须要在 $.ajax 调用时设置 dataType 为 json 才可以正确处理服务器返回的JSON数据,并且 done 中的参数会是一个直接的JavaScript对象,完整的代码如下,HTML Form:

<form id="avatarForm" enctype="multipart/form-data"> <input id="avatarUpload" name="avatarUpload" type="file" /> </form>

然后,每当用户选择一个文件后,立即上传,JavaScript如下:

// avatarUpload是上面的type = “file”的input元素 // 每当选择文件后立即发送Ajax请求 $('#avatarUpload').change(function() { //'upload'是具体发送POST请求针对的服务器URL $.ajax('upload', { type: 'POST', files: $('#avatarUpload'), iframe: true, // 注意如果服务器返回结果是JSON,dataType要设置 dataType: 'json' }).done(function(data) { // 这里data是JavaScript对象 console.log('done()', data); }).fail(function() { console.log('fail()'); }).always(function() { console.log('always()'); }); });

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • jfinal前台ajax发送json数据,controller实体接收的问题

    jfinal前台ajax发送json数据,controller实体接收的问题

    2017-04-17 15:05

  • PHP使用curl函数发送Post请求的注意要点

    PHP使用curl函数发送Post请求的注意要点

    2016-12-20 17:03

  • Android M(6.x)使用OkHttp包解析和发送JSON请求的教程

    Android M(6.x)使用OkHttp包解析和发送JSON请求的教程

    2016-11-28 14:00

  • 在 Laravel 5.1 中使用SMTP驱动实现邮件发送(含附件和图片)详

    在 Laravel 5.1 中使用SMTP驱动实现邮件发送(含附件和图片)详

    2015-11-16 19:28

网友点评