$ .getJSON在本地工作,但在上传到Web服务器时不起作用

时间:2013-03-27 09:23:16

标签: jquery json apache getjson

我正在编写一个在我的本地计算机上工作正常的脚本,但是当我将它上传到我的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甚至没有运行。

我将其作为文件夹

上传到apache
Folder
|
|-->Index.html
|
|-->Data.json

2 个答案:

答案 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,并在检查器窗口的底部找到它。您可以直接查看响应的内容以及格式是否正确。