2016-07-22 8 views
0

私はイメージファイルをアップロードするためにXMLHttpRequestを作成しています。私はそれが200ステータスであり、私のイメージが私のサービスにアップロードされていることがわかります。私は(のような情報が含まれている必要がありますなど、私のイメージのためのURL、ファイル名、タイムスタンプ、画像の大きさを、)responseTextを取得するために以下のコードを使用している場合しかし、それは空の文字列として戻ってくる:XMLHttpRequestのステータスは200ですが、responseTextは空です。

//... 

    const data = new FormData(); 
    data.append('file', props); 
    data.append('upload_preset', uploadPreset); 
    data.append('api_key', apiKey); 

    const xhr = new XMLHttpRequest(); 
    xhr.open('POST', cloudinaryURL, true); 
    const sendImage = xhr.send(data); 
    const imageResponse = xhr.responseText; 
    console.log('Response: ', imageResponse); 
コンソールに

プリントこの:

Response: 

なぜこれが起こっているすべてのアイデア/どのようにこの問題を解決するには?

ありがとうございます!

xhr.open('POST', cloudinaryURL, true); 

をしかし、あなたのコードは、同期モードのために設計されています:

+0

エラーはjsの部分にあると確信していますか? – k102

+0

あなたは何をサーバー側に返すのですか? – rottenoats

+0

'responseText'は呼び出すページの出力テキストです – nmnsud

答えて

3

あなたは非同期モードでのXMLHttpRequestを使用している

xhr.open('POST', cloudinaryURL, false); 

を非同期モードでは、xhr.send()は、実際に要求を処理せずにすぐに戻ります。したがって、アクセスしようとすると、まだxhr.responseTextにデータが入力されていません。

+0

はい、これは私の問題を解決しました!問題を指摘して説明してくれてありがとう。感謝します。 – hidace

+1

私はそれが助けてうれしいです。副次的なこととして、実際にはブラウザの応答がないように非同期モードを使用することをお勧めします。実際の例[here](http://www.w3schools.com/ajax/tryit.asp?filename=tryajax_first)を見ることができます。 – Arnauld

+0

例のおかげでよかったです。だから私はこれを非同期的に実行し、readyState == 4とstatus == 200ならresponseTextへのアクセスを得ることができるように見えます。ありがとうございました!! – hidace

関連する問題