【问题标题】:Facing Issue while using XMLHttpRequest with QML JavaScript将 XMLHttpRequest 与 QML JavaScript 一起使用时面临的问题
【发布时间】:2011-09-22 14:09:49
【问题描述】:

将 XMLHttpRequest 与 QML 和 JavaScript 结合使用时遇到的问题。
我从 QML 按钮单击调用 JavaScript 函数,在该 JavaScript 中我将 XMLHttpRequest 发送到服务器。但是当我发送请求时,我会立即在函数中回调(我拒绝使用onreadystatechange 属性)作为req.readyState == XMLHttpRequest.DONEreq.status 是'0'。

通常我们得到readyState如下:

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

在完成状态下,我们检查应该是 200 的请求状态。
什么会导致这种行为。

这是 QT JavaScript Interpreter 的问题吗?

我被这个困住了

谢谢。

【问题讨论】:

  • 确保您在 onreadystatechange 函数中使用请求对象引用而不是 this

标签: javascript qml


【解决方案1】:

我不能说QT解释器是否有问题,但可能是您的请求有问题。 req.readyState == XMLHttpRequest.DONE 并不表示请求成功;即使出现错误,您也会得到它,请参阅 this source.

中的 DONE

完成(数值4)

数据传输已完成或传输过程中出现问题(例如 无限重定向)。

[...]

DONE 状态有一个相关的错误标志,指示某种类型的网络错误或中止。可以是真也可以是假,初始值为假。

来自status attribute

status 属性必须返回运行这些步骤的结果:

如果状态为 UNSENT 或 OPENED,则返回 0 并终止这些步骤。

如果错误标志为真,则返回 0 并终止这些步骤。

返回 HTTP 状态码。

【讨论】:

    【解决方案2】:

    您是否碰巧在后端使用带有自签名证书的 HTTPS 连接?如果是,请尝试使用纯 HTTP(或使用有效的 SSL 证书)——几天前使用自签名证书时遇到了类似的问题。

    【讨论】:

      猜你喜欢
      • 2014-12-16
      • 2011-03-15
      • 1970-01-01
      • 1970-01-01
      • 2018-03-10
      • 1970-01-01
      • 2020-11-02
      • 2012-08-20
      • 1970-01-01
      相关资源
      最近更新 更多