我正在编写一个在我的本地计算机上工作正常的脚本,但是当我将它上传到我的Web服务器时,我的$ .getJSON请求无效。
function loadData(fileName) {
return $.getJSON(fileName + ".json");
}
var data;
var myFile = "Data";
loadData(myFile).done(function (data1) {
if (data1 && data1.info) {
data = data1;
$.each(data1.info[0], function (key, value) {
alert(value);
});
}
});
我已经删除了很多内部代码,基本上只需要获取结果并将它们放入html元素中。我要求的网址是在远程服务器上,但是当我从我的硬盘驱动器运行这个html页面时,它可以正常工作。当我将它上传到我的网络服务器时它没有弹出,就像$ .getJSON甚至没有运行。
我将其作为文件夹
上传到apacheFolder
|
|-->Index.html
|
|-->Data.json
答案 0 :(得分:2)
不要依赖$.getJSON()
方法,而是使用$.ajax()
:您可以更好地控制请求标头。
使用以下选项尝试,并将函数调用与您的应用程序特有的参数集成:
$.ajax({
type: "POST",
url: "some-url.json",
contentType: "application/json; charset=utf-8",
dataType: "json"
});
可以找到$.ajax()
方法的完整文档here。
答案 1 :(得分:1)
我遇到了同样的问题,但它可以在远程服务器上运行,而不是在本地开发设备上运行(在我将项目从远程服务器导入到我的新开发设备之后)。
我终于发现我的PHP脚本会根据未设置的$ _Session键发出通知。远程专用服务器设置为不发出我的本地服务器通知。
结果是 - 在我的本地设备上 - 响应无法被解析为JSON。在isset()
上输入$_SESSION
命令后,JSON请求真正 JSON并且jQuery正确解析了它。
只需证明您的服务器响应是什么。您可以使用Web Developer - > Firefox上的Web控制台。只需右键单击发送AJAX请求后出现的URL,并标记该字段以记录您的请求及其响应。您可以在再次调用AJAX调用后检查URL,并在检查器窗口的底部找到它。您可以直接查看响应的内容以及格式是否正确。