【问题标题】:Making an HTTP POST call with multipart/form-data using jQuery?使用 jQuery 使用 multipart/form-data 进行 HTTP POST 调用?
【发布时间】:2011-04-02 01:17:35
【问题描述】:

我正在尝试使用 jQuery 使用 multipart/form-data 进行 HTTP POST 调用:

$.ajax({
  url: 'http://localhost:8080/dcs/rest',
  type: 'POST',
  contentType:'multipart/form-data',
  data: 'dcs.source=boss-web&query=data&dcs.algorithm=lingo&dcs.output.format=JSON&dcs.clusters.only=true', 
  //dataType: "jsonP",
  success: function(jsonData) {alert('POST alert'); data=jsonData ; },
  error : function(XMLHttpRequest, textStatus, errorThrown) {
            console.log('An Ajax error was thrown.');
            console.log(XMLHttpRequest);
            console.log(textStatus);
            console.log(errorThrown);
          }
});

它不起作用。 Firebug 返回一个未定义的错误,并且返回的XMLHttpRequst object multipart 字段设置为 false。

我可以做些什么来使这个工作与 jQuery 一起工作?如果不可能,是否有一个简单的方法来实现这一点?

即不需要传输文件,只是一些数据。但服务器需要多部分。

【问题讨论】:

    标签: javascript jquery http post multipart


    【解决方案1】:

    multipart/form-data 不这样看:

    dcs.source=boss-web&query=data&dcs.algorithm=lingo&dcs.output.format=JSON&dcs.clusters.only=true
    

    这是application/x-www-form-urlencoded

    这是examplemultipart/form-data 请求的样子。以及相关的RFC 1867

    multipart/form-data 经常与上传文件相关联。如果这是您的情况,您可以查看jquery form plugin,它允许您对表单和supports file uploads 进行ajaxify。

    【讨论】:

      【解决方案2】:

      使用FormData(),可以通过ajax请求上传文件。

      更多信息请参考此链接:FormData

      FormData使用教程:tutorial

      【讨论】:

      【解决方案3】:

      这种方式有效:

      $( "form#upload-form" )
          .attr( "enctype", "multipart/form-data" )
          .attr( "encoding", "multipart/form-data" );
      $.ajax({ 
          type: "POST",
          contentType:attr( "enctype", "multipart/form-data" ),
          url: "/adm/oferta_insert",
          data: dados, 
          success: function( data ) { 
              alert( data );  
          }  
      });  
      

      http://www.bennadel.com/blog/1273-Setting-Form-EncType-Dynamically-To-Multipart-Form-Data-In-IE-Internet-Explorer-.htm

      【讨论】:

      • 如果我尝试发送的数据实际上不是完整的形式怎么办?
      • 我收到一条错误消息,提示未为设置 contentType 的部分定义 attr。
      猜你喜欢
      • 2011-07-28
      • 1970-01-01
      • 2014-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-02
      • 2019-03-23
      • 2020-02-05
      相关资源
      最近更新 更多