Java 脚本的奇怪行为。
我正在尝试使用 QT-QML 和 JavaScript 开发一个简单的示例应用程序。
在此我使用 HTTP 请求,我有一个使用 JavaScript 发送 HTTP 请求的按钮。
当我在回调函数中收到 HTTP 请求的响应时,我试图按如下方式读取 HTTP 响应的状态。
if( httpReq.readyState == 4 ) //Problem
{
if(httpReq.status == 200 )
{
...
我正在尝试检查 readyState
是否为 4
(4 代表完成/完成)
但是,如果条件无法检查这一点,并且无论 readyState
值如何,都会被评估为 true。
例如,如果 readyState
是 0
(0 == 4) 那么如果条件被评估为 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 HTTP 请求提供服务)。当我在两个不同的应用程序/可执行文件中分离 HTTP 服务器和 QML 应用程序时它确实有效,而当我将这两个应用程序组合在同一个可执行文件中时它会产生问题。当我将 HTTP 服务器和 QML 应用程序结合在一个可执行的 QML JavaScript 解释器中时,它开始表现得很奇怪。在运行 Web 服务器之前,我在单独的线程中运行 QML 应用程序。
最佳答案
你试过吗:
if( httpReq.readyState == 4 ) //Problem
{
console.log("Evaluated to true with: " + httpReq.readyState);
...
断言条件确实被评估为 true,但整数错误?
或者,由于您在 QML 中调用它,这可能来自您将 javascript 与 QML 一起使用的方式,您能展示如何从 QML 调用 javascript 吗?
关于javascript - JavaScript 与 QML 的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7468738/