17

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

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

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

4

3 に答える 3

11

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フォームプラグインをご覧ください。

于 2010-08-21T13:27:01.660 に答える
1

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

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

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

于 2012-10-19T09:58:37.273 に答える
-1

この方法は機能します:

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

于 2012-10-08T13:45:53.777 に答える