2016-07-22 123 views
0

我正在製作一個XMLHttpRequest來上傳圖像文件。我可以看到這是一個200狀態,我的圖像上傳到我的服務。然而,當我使用下面的代碼來獲取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: 

任何想法,爲什麼這種情況正在發生/如何解決這個問題?

謝謝!

+0

你確定錯誤是在JS部分? – k102

+0

你回來的服務器端是什麼? – rottenoats

+0

'responseText'是你正在調用的頁面的輸出文本 – nmnsud

回答

3

您正在使用XMLHttpRequest的異步模式:

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

但你的代碼是專爲同步模式:

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

在異步模式下,xhr.send()將立即返回,而無需實際處理請求。因此,當您嘗試訪問它時,xhr.responseText尚未填充。

+0

是的,這解決了我的問題!非常感謝您指出問題並解釋。欣賞它。 – hidace

+1

我很高興它有幫助。作爲一個便箋,我實際上會推薦使用異步模式來避免瀏覽器無響應。你可以看到一個實例[這裏](http://www.w3schools.com/ajax/tryit.asp?filename=tryajax_first)。 – Arnauld

+0

太好了,謝謝你的例子。所以它看起來像我可以異步運行並訪問responseText如果readyState == 4和狀態== 200.非常好知道。謝謝!! – hidace

相關問題