web-dev-qa-db-ja.com

HTTPを作成するPOST jQueryを使用してmultipart / form-dataで呼び出しますか?

JQueryを使用して、HTTP POST multipart/form-dataで呼び出します:

$.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オブジェクトマルチパートフィールドはfalseに設定されます。

これをjQueryで機能させるにはどうすればよいですか?そしてそれが不可能な場合、これを達成する簡単な方法はありますか?

つまり、ファイルを転送する必要はなく、一部のデータのみを転送します。ただし、サーバーにはマルチパートが必要です。

17
Alex Brooks

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

これが の方法ですmultipart/form-dataリクエストは次のようになります。そして、関連 RFC 1867

multipart/form-dataは、ファイルのアップロードに頻繁に関連付けられています。これがあなたのケースである場合は、フォームをajax化できる jquery form pluginsupports file uploads も確認してください。

11
Darin Dimitrov

FormData()を使用すると、ajaxリクエスト経由でファイルをアップロードできます。

詳細については、このリンクを参照してください: FormData

FormDataの使用に関するチュートリアル: tutorial

1
NkS

このように動作します:

$( "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

0
gilcierweb