2011-09-22 135 views
1

在QML和JavaScript中使用XMLHttpRequest時面臨的問題。
我從QML按鈕單擊調用JavaScript函數,在該JavaScript中,我將XMLHttpRequest發送到服務器。但是當我發送請求時,我立即回到函數(我使用onreadystatechange屬性抵制)作爲req.readyState == XMLHttpRequest.DONE,但req.status爲'0'。在QML中使用XMLHttpRequest時面臨的問題JavaScript

通常我們得到readyState如下:

XMLHttpRequest.UNSENT = 0; 
XMLHttpRequest.OPENED = 1; 
XMLHttpRequest.HEADERS_RECEIVED = 2; 
XMLHttpRequest.LOADING = 3; 
and then 
XMLHttpRequest.DONE = 4; 

和完成狀態,我們檢查應該是200
什麼會導致這種行爲的請求狀態。

這是QT JavaScript解釋器的問題嗎?

我堅持這個

感謝。

+0

確保您在'onreadystatechange'函數中使用請求對象引用而不是'this'。 – sergk

回答

0

我不能說QT解釋器是否有問題,但可能是您的請求有問題。 req.readyState == XMLHttpRequest.DONE並不意味着該請求是成功的;你會得到它甚至錯誤,請參閱this source.

DONE

的數據傳輸已經完成或某事在傳輸過程中出了問題(如 無限(數字4的值)來完成重定向)。

[...]

的DONE狀態具有表示某種類型的網絡錯誤或流產的相關聯的錯誤標誌。它可以是真或假,並具有假的初始值。

status attribute:如果狀態UNSENT或打開返回0

,並終止這些步驟:

狀態屬性必須返回運行這些步驟的結果。

如果錯誤標誌爲真,則返回0並終止這些步驟。

返回HTTP狀態碼。

0

您是否碰巧在後端使用HTTPS連接與自簽名證書?如果是,請嘗試使用簡單的HTTP(或者使用有效的SSL證書) - 幾天前有自簽名證書的類似問題。