簡體   English   中英

帶有QML的JavaScript的怪異行為

[英]Weird behavior of JavaScript with QML

Java腳本的怪異行為。 我正在嘗試使用QT-QML和JavaScript開發一個簡單的示例應用程序。
在這種情況下,我正在使用HTTP請求,而我使用的是Button,它使用JavaScript發送HTTP請求。

當我在回調函數中收到HTTP請求的響應時,我嘗試按以下方式讀取HTTP響應的狀態。

if( httpReq.readyState == 4 ) //Problem
{   
    if(httpReq.status == 200 )
    {
           ...

我正在嘗試檢查readyState是否為4 (4表示完成/完成)
但是,如果條件無法檢查到這一點,並且無論readyState值如何,都將其評估為true。
例如,如果readyState0 (0 == 4),那么如果condition的求值結果為TRUE,則不應該這樣做。
為什么會發生這種情況。

我也嘗試過

 1. if( parseInt(httpReq.readyState) == 4 ) 
 2. if( Number(httpReq.readyState) == 4 )  
 3. if( httpReq.readyState == '4' )  

上面的條件也給出了相同的結果,並且無論readyState值如何,都將其評估為TRUE。
我的JavaScript解釋器有什么問題嗎?

謝謝。

------更新-----

問題是,我在同一應用程序/進程中都有QML應用程序(發送HTTP請求)和HTTP服務器(該QML HTPP請求中的哪個服務器)。 當我在兩個不同的應用程序/可執行文件中分離HTTP服務器和QML應用程序時,它確實可以工作,而當我將兩個應用程序合並在同一個可執行文件中時,則會產生問題。 當我將HTTP服務器和QML應用程序合並到一個可執行的QML JavaScript解釋器中時,它開始變得怪異。 在運行Web服務器之前,我正在單獨的線程中運行QML應用程序。

你試過了嗎:

if( httpReq.readyState == 4 ) //Problem
{   
  console.log("Evaluated to true with: " + httpReq.readyState);

...

要斷言條件是使用錯誤的整數真正地評估為true?

另外,由於您是在QML中調用此代碼的,所以這可能是您在QML中使用javascript的方式,您能否說明如何從QML調用javascript?

一個描述行為的最小示例將很有幫助。

以下代碼對我來說沒有問題:

import QtQuick 1.0

Item {
    Component.onCompleted: {
        var req = new XMLHttpRequest();
        req.onreadystatechange = function() {
            console.log("readyState: " + req.readyState);

            if (req.readyState == XMLHttpRequest.DONE) { // 4 instead of 'XMLHttpRequest.DONE' works here too
                console.log("Request complete");

                if (req.status == 200) {
                    console.log("Status code: 200");
                    console.log(req.responseText.slice(0, 50) + "...")
                }
            }
        }

        req.open("GET", "http://stackoverflow.com/");
        req.send();
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM