【发布时间】:2014-04-03 21:15:48
【问题描述】:
我正在尝试通过嵌入在 QWebView 中的 JavaScript 中的 GET 加载网站。如果我使用 jQuery.ajax 它会给我一个错误。解决办法是取XMLHttpRequest。
这是我的 JavaScript 代码:
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
var data = jQuery.parseXML(xmlhttp.responseText);
alert(data);
} else if (xmlhttp.readyState == 4) {
alert(JSON.stringify(xmlhttp));
}
}
xmlhttp.open("GET", CO_SERVICE, true);
xmlhttp.setRequestHeader("Authorization", "Basic " + btoa("user:password"));
xmlhttp.send();
它在 Chrome 中运行良好。如果我执行我的 Qt 应用程序并加载文件:
QNetworkProxyFactory::setUseSystemConfiguration(true);
ui->webView->load(QUrl("qrc:///index.html"));
ui->webView->show();
我收到此错误:
我做错了什么?
【问题讨论】:
-
这可能是
alert(JSON.stringify(xmlhttp));调用产生的结果。因为您将 xmlhttp 对象字符串化。 -
@Jite 我知道这一点,但仍然存在一些错误。响应为空,并且它跳转到 else if 的事实证明发生了错误。
-
好吧,如果它跳转到
else,可能是因为脚本返回的状态不是200。我在json数据中看不到status属性,所以不确定是哪个,但也许您请求的页面不存在? -
@Jite
"status": 0。这可能是因为我的网络使用代理吗?但是我可以在位于内部服务器上的 JS 中加载依赖项。 -
查看此答案以获取有关状态码 0 的信息:*.com/a/12622082/1980359。代理可能是一个问题并非不可能,您可以在没有代理的情况下尝试脚本,看看是否有效?
标签: javascript c++ ajax qt qwebview