2016-07-21 19 views
1

私はAJAX経由でサードパーティのAPIに投稿リクエストを送信しようとしていますが、私はこれらの2つのエラーを返されています。Ajax multipart/formdata投稿のリクエスト

メインスレッドの同期XMLHttpRequestは、エンドユーザーの経験に有害な影響を与えるため、非推奨です。ブロックされた

クロスオリジン・リクエスト:同一生成元ポリシーは、ここでhttps://my-provided-api-url

でリモートリソースを読んで許可していません、私のHTMLフォームを送信である:ここでは

<div class="upload"> 
    <h2>Select a file for upload</h2> 
    <form name="addProductForm" id="addProductForm" action="javascript:;" enctype="multipart/form-data" method="post" accept-charset="utf-8"> 
     <input type="file" id="myFile"> 
     <input type="submit" value="Submit" id ="submit-button"> 
    </form> 
</div> 

は、AJAX要求のための私のjQueryのコードです:

$(document).ready(function() { 
    $("#addProductForm").submit(function (event) { 
     event.preventDefault(); 
     var formData = $(this).serialize(); 

     $.ajax({ 
      url: 'https://my-provided-api-url', 
      type: 'POST', 
      data: formData, 
      async: false, 
      cache: false, 
      contentType: false, 
      processData: false, 
      success: function() { 
       alert('Form Submitted!'); 
      }, 
      error: function(){ 
       alert("error in ajax form submission"); 
      } 
     }); 
     return false; 
    }); 
}); 

ありがとうございます。

+0

async:falseを使用しているため、最初の「エラー」は警告に過ぎません。 (これは、非同期のajaxリクエストを処理する方法がわからないため、これを行うのは良い考えではありません)。2番目のエラーには、グーグルで見つかるさまざまな回答がいくつかあります。これらのいくつかが役立つはずです。 – BobRodes

答えて

0

を見ることができます。メインスレッド上

同期のXMLHttpRequestがエンドユーザーの体験

に、その弊害で廃止されましたこれは、あなたがasync: falseを使用しているので、これは非常に悪い習慣です。要求が実行されている間にUIスレッドが更新されないようにします。これにより、ブラウザがハングアップしたようにユーザーに表示されます。リクエストを非同期にし、コールバックを使用してレスポンスを処理します。ブロックされた

クロスオリジン・リクエスト:同一生成元ポリシーは、これは非常に大きな問題であるhttps://my-provided-api-url

でリモートリソースを読ん禁止します。要求しているドメインにCORSが有効になっていません。つまり、JavaScriptを使用してAPIにリクエストすることはできません。Same Origin Policyの購入を中止することになります。この問題を回避するには、サーバにローカルAJAXリクエストを行い、サードパーティにリクエストをプロキシしてデータを返すことができます。

0

エラーの原因は、まさにこのライン要求の定義です:

async: false 

エラーの説明では、メインスレッドのユーザーアクションの同期のXMLHttpRequestを行う際に応答がない持っていながら、ブロックされているということです受信されました。動作が異なっているので、あなたは注意する必要があります

async: false 

:あなたは同期呼び出しを行うことができ、それを行うことができますが、

を推奨されていません。あなたは順番に2つのエラーへの対処ここdiferents Diferences between sync and async ajax request