• ajaxFileUpload插件上传文件 返回 syntaxError :unexpected token


    问题是json返回值中包含了html代码,这是ajaxFileUpload需要改进地方。

    从错误提示上看有点像是json数据中出现了<(尖括号),为了看到json数据,将js修改如下: 

    function ajaxFileUpload() {
        
      $.ajaxFileUpload
        (
          {
            url: '/upload',
            secureuri: false,
            fileElementId: 'file_field',
            dataType: 'content', //这里修改为content
                
            success: function (data, status) {
              alert(data);
            },
                    
            error: function (data, status, e) {
               alert(e);
            }
          }
        )
    }

    结果返回的json数据如猜测,json数据被包含在一个<pre></pre>的标签中,如下图:

    网上查了下原因,是因为Server端的Response上加上了contentType="application/json"。但有时后端这么做是必须的,所以修改ajaxFileUpload源码,将<pre></pre>标签去掉,如下: 

    uploadHttpData: function( r, type ) {
            var data = !type;
            data = type == "xml" || data ? r.responseXML : r.responseText;
            // If the type is "script", eval it in global context
            if ( type == "script" )
                jQuery.globalEval( data );
            // Get the JavaScript object, if JSON is used.
            if ( type == "json" ) {
                 ////////////以下为新增代码///////////////
                 data = r.responseText;
                 var start = data.indexOf(">");
                 if(start != -1) {
                   var end = data.indexOf("<", start + 1);
                   if(end != -1) {
                     data = data.substring(start + 1, end);
                    }
                 }
                  ///////////以上为新增代码///////////////
                  eval( "data = " + data);
            }
            // evaluate scripts within html
            if ( type == "html" )
                jQuery("<div>").html(data).evalScripts();
    
            return data;
        }

    至此,大工告成,ajaxFileUpload的dataType正常使用json。 

  • 相关阅读:
    content-type
    文件上传
    注册案例
    20 行代码极速为 App 加上聊天功能
    一步一步带你安装史上最难安装的 vim 插件 —— YouCompleteMe
    iOS 调试心得
    Playground 你不知道的小技巧, CoreData 的使用
    令人眼前一亮的下拉式终端 Tilda & Guake
    代码可读性提升指南
    iOS 推送问题全解答《十万个为啥吖?》
  • 原文地址:https://www.cnblogs.com/lasthelloworld/p/4952162.html
Copyright © 2020-2023  润新知