2

我正在编写一个在我的本地机器上运行良好的脚本,但是当我将它上传到我的网络服务器时,我的 $.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 元素中。我请求的 url 在远程服务器上,但是当我从硬盘驱动器运行这个 html 页面时它可以工作。当我将它上传到我的网络服务器时,它没有弹出,就像 $.getJSON 甚至没有运行。

我将它作为文件夹上传到 apache

Folder
|
|-->Index.html
|
|-->Data.json
4

2 回答 2

2

不要依赖$.getJSON()方法,$.ajax()而是使用:您将对请求标头拥有更多控制权。

尝试使用以下选项,并将函数调用与应用程序特有的参数集成:

$.ajax({
    type: "POST",
    url: "some-url.json",
    contentType: "application/json; charset=utf-8",
    dataType: "json"
});

$.ajax()方法的完整文档可以在这里找到。

于 2013-03-30T20:34:29.507 回答
1

我遇到了同样的问题,但它适用于远程服务器而不是本地开发设备(在我将项目从远程服务器导入到我的新开发设备之后)。

我终于发现我的 PHP 脚本会根据未设置的 $_Session 键引发通知。远程专用服务器设置为无论我的本地服务器是什么都不会发出任何通知。结果是 - 在我的本地设备上 - 响应无法被解析为 JSON。在我对 JSON 请求输入isset()命令后$_SESSION,JSON 请求确实是JSON 并且 jQuery 正确解析了它。

只需证明您的服务器响应是什么。您可以使用 Firefox 上的 Web Developer -> Web 控制台来完成。只需右键单击发送 AJAX 请求后出现的 URL 并标记该字段以记录您的请求及其响应。然后,您可以在再次调用 AJAX 调用后检查 URL,在检查器窗口的底部您会找到它。您可以直接看到响应是什么以及其格式是否正确。

于 2013-05-05T13:16:34.637 回答