【发布时间】:2017-11-30 15:09:16
【问题描述】:
我的网页在从 REST 服务器数据中绘制图表时遇到问题。 如果我使用 php 文件中的 url 执行简单的 file_get_contents 进行 ajax 调用,我的代码就可以工作。 但是,如果我想直接使用 url,则对其余服务器的调用有效,但 ajax 返回 Object 对象。
这是有效的:
jsonData=$.ajax({
url: "getData.php",
dataType: "json",
data: text,
async: false
}).responseText;
document.getElementById("demo2").innerHTML =jsonData;
这不行
jsonData=$.ajax({
url: ""+text+"",
dataType: "json",
async: false
}).responseText;
document.getElementById("demo2").innerHTML =jsonData;
这是我的 getData.php :
$string = file_get_contents("http://localhost:5000/'Pi%202'/5/temperature/11.27.2017%2010:00/11.28.2017%2023:00");
回声 $string;
文本包含正确的 url,因为对其余服务器的获取查询是成功的。 两者都在其余服务器上进行获取,但在第二个 jsonData 中是 Object 对象。如果我删除 responseText 我得到一个未定义而不是 Object 对象。 我已经尝试过针对这个问题提出的多种解决方案,我已经尝试了成功功能的东西,但根本没有给我任何答案。 我已经被这个问题困扰了超过 2 天,这是我整个项目工作的最后一部分,我正在认真考虑放弃它或扔掉我的电脑。 提前感谢您的帮助。
【问题讨论】:
-
一些事情...首先,不要使用
async: false。保持你的异步代码异步。通过正确使用这些工具,您遇到问题的可能性就会降低。第二,""+text+""实际上变成了什么?您还从第二个示例中省略了data,这是故意的吗?第三,定义“不工作”。这以什么具体方式失败?是否发出了 AJAX 请求?服务器的响应究竟是什么?使用浏览器的调试工具。 -
""+text+"" 包含了其余服务器查询数据的url。我使用 jsonData 用 chart.js 绘制图形,在第一种情况下,我取回数据并且图形工作,在第二种情况下,我的数据返回 Object 对象。两个调用都从其他服务器得到完全相同的答案,所以它必须是 javascript 做一些废话。我使用 async false 是因为它不能以任何其他方式工作,....
-
在您浏览器的调试工具中(查看网络选项卡),这两个示例的请求和响应有什么区别吗?请求的 URL 是否更改?包含的数据有变化吗?标题会改变吗?响应内容是否改变?响应头会改变吗?
-
数据字段试图将我的 url 传递给完全失败的 php 文件。在这种情况下,它的存在没有任何区别。
-
嗯,第一个建议是首先消除错误使用 AJAX 的变量。移除
async: false并在success处理程序或.done()处理程序中执行后续操作。除此之外,也许我们需要更好地理解您在这里尝试完成的目标。如果第一个代码示例有效,您为什么要更改它?
标签: javascript php ajax url