关于jquery:getJSON请求失败

getJSON request fails

我有一个json文件,当点击一个按钮时,一些数据会附加到html文档中的div中:

HTML:

1
<button id="one"></button>

这里的javascript:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
function one(){
    $("#one").click(function(){
        $.getJSON('one.json',function(data){
            alert("success");      
        })
        .done(function() { alert('getJSON request succeeded!'); })
        .fail(function() { alert('getJSON request failed! '); })
        .always(function() { alert('getJSON request ended!'); });
    });
}

$(document).ready(function() {
   one();
});

one.json文件位于js文件的同一目录中。 当我点击按钮时,警报就是
"getJSON请求失败"......哪里出错?


看看以下代码是否有效: -

1
2
3
 $.getJSON('/YourDirectory/one.json',function(data){
            alert("success");      
        })


您的Ajax请求将查看当前页面的URL,因此如果您在:

  • mysite.com/index.html,它将在mysite.com/one.json上查找

  • mysite.com/category/index.html,它会看
    mysite.com/category/one.json

如果您有一个现代浏览器,则可以打开开发人员控制台以查看确切的请求是什么。


好吧,要么删除getJSON方法中的成功回调,要么使用.done .fail ..或仅使用成功回调

1
2
3
4
5
6
7
8
9
10
11
12
 function one(){
   $("#one").click(function(){
    $.getJSON('path/to/one.json')
    .done(function() { alert('getJSON request succeeded!'); })
    .fail(function() { alert('getJSON request failed! '); })
    .always(function() { alert('getJSON request ended!'); });
   });
}

$(document).ready(function() {
  one();
 });

如果您从网址开放html

1
localhost:80/project/test.html

然后json路径将是

1
localhost:80/project/one.json

因此,请确保html和json在同一个文件夹中。


$.getJSON()将url作为获取JSON的位置的参数,而不是文件路径。

$.getJSON('/one.json', function (data) { ... });

要么

$.getJSON('http://localhost:1234/one.json', function (data) { ... });

获取one.json文件的URL并粘贴到浏览器地址栏中。如果浏览器返回JSON内容,那么您知道可以在$ .getJSON()`调用中使用该URL。