【问题标题】:Am I using jquery getJSON correctly? Nothing appears on the page in godaddy我正确使用 jquery getJSON 吗? godaddy的页面上什么都没有
【发布时间】:2014-01-03 10:52:38
【问题描述】:

我有一个 json 文件和一个使用 jquery 1.10 getJSON 的索引文件,我正在尝试从 json 文件中获取数据以显示。我已经让它在我的本地主机上工作,但是当我将索引文件移动到子域 mbsk8.zerogravity-web.com 并将 JSON 文件移动到基​​本域 www.zerogravity-web .com,应该更新的页面部分是空白的。这让我相信这是一个跨域请求问题。

console.log 中也没有添加任何值。

这是我尝试处理的跨域请求:

  • 在 URL 末尾添加了 "?callback=?"
  • 在 JSON 对象周围添加了一个名称:jsonResponse(JSON 格式对象)

我的godaddy账户的文件夹结构是:

json 文件: /LloydIce/json/skschedule.json

索引文件: /LloydIce/m/index.html (m) 是移动的子域,使用jquery mobile

index.html 的代码

jquery 资源的标题部分

    <link rel="stylesheet" href="http://code.jquery.com/mobile/1.4.0/jquery.mobile-1.4.0.min.css" />
    <script src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
    <script src="http://code.jquery.com/mobile/1.4.0/jquery.mobile-1.4.0.min.js"></script>

标题中的脚本部分

$(document).on('pagebeforeshow','#OpenSkate',function() {
$('#publicHolder').empty();
    $.getJSON('http://www.zerogravity-web.com/LloydIce/json/skschedule.json?callback=?',function(data)
{
  $.each(data, function(index, data){

    var collapsible = $('<div data-role="collapsible"></div>');
    console.log(this.day);
    collapsible.append('<h2>' + this.day + '</h2>');


      $.each(data.activities, function(index, data){
        if(this.type === "Public"){
        console.log(this.notes + ", " + this.activity);
        collapsible.append('<p><strong>' + this.activity + '</strong></p>');


        $.each(data.times, function(index, data){
          collapsible.append('<p><strong>Start:</strong> ' + this.start + ', <strong>End:</strong> ' + this.end + '</p></div>');

                    });
                    }
                });
            var collapsibleSet = $("#publicHolder");
            collapsibleSet.append(collapsible);
            collapsibleSet.trigger('create');
            });

        }); 
    });

JSON 文件代码:

jsonResults(
[
    {
    "day": "Monday",
    "activities": [
        {
            "type": "Class",
            "notes": "Ages 3-5",
            "activity": "Snowbunnies 1 ",
            "times": [
                {"start":"6:00 PM","end":"6:45 PM"}
            ]
        },
        {
            "type": "Public",
            "notes": "N/A",
            "activity": "Open Skate ",
            "times": [
                {"start":"11:30 AM","end":"5:00 PM"},
                {"start":"7:30 PM","end":"9:30 PM"}
            ]
        }
    ]
}
]
);

chrome 开发工具网络 - 标题选项卡

   Request URL:http://www.zerogravity-web.com/LloydIce/json/skschedule.json?callback=jQuery110206146174017339945_1388711470249&_=1388711470252
Request Method:GET
Status Code:200 OK
Request Headersview source
Accept:*/*
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Connection:keep-alive
Cookie:__utma=183972909.883508564.1382898602.1388360907.1388663932.3; __utmz=183972909.1382898602.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)
Host:www.zerogravity-web.com
Referer:http://mbsk8.zerogravity-web.com/
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36
Query String Parametersview sourceview URL encoded
callback:jQuery110206146174017339945_1388711470249
_:1388711470252
Response Headersview source
Accept-Ranges:bytes
Access-Control-Allow-Origin:http://mbsk8.zerogravity-web.com
Access-Control-Allow-Origin:http://mbsk8.zerogravity-web.com
Connection:Keep-Alive
Content-Length:563
Content-Type:application/json
Date:Fri, 03 Jan 2014 01:48:53 GMT
ETag:"233-4ef071c1e30e4"
Keep-Alive:timeout=5, max=100
Last-Modified:Fri, 03 Jan 2014 01:48:42 GMT
Server:Apache

Chrome 开发工具网络 - 预览和响应标签:

jsonResults(
[
    {
        "day": "Monday",
        "activities": [
            {
                "type": "Class",
                "notes": "Ages 3-5",
                "activity": "Snowbunnies 1 ",
                "times": [
                    {"start":"6:00 PM","end":"6:45 PM"}
                ]
            },
            {
                "type": "Public",
                "notes": "N/A",
                "activity": "Open Skate ",
                "times": [
                    {"start":"11:30 AM","end":"5:00 PM"},
                    {"start":"7:30 PM","end":"9:30 PM"}
                ]
            }
        ]
    }
]
);

Chrome 开发工具控制台

Uncaught ReferenceError: jsonResults is not defined skschedule.json?callback=jQuery110206146174017339945_1388711470249&_=1388711470252:1
(anonymous function)

如果我从 JSON 文件中删除 jsonResults,网络预览选项卡中的信息如下所示

[{day:Monday,...}]
    0: {day:Monday,…}
activities: [{type:Class, notes:Ages 3-5, activity:Snowbunnies 1 , times:[{start:6:00 PM, end:6:45 PM}]},…]
0: {type:Class, notes:Ages 3-5, activity:Snowbunnies 1 , times:[{start:6:00 PM, end:6:45 PM}]}
activity: "Snowbunnies 1 "
notes: "Ages 3-5"
times: [{start:6:00 PM, end:6:45 PM}]
0: {start:6:00 PM, end:6:45 PM}
end: "6:45 PM"
start: "6:00 PM"
type: "Class"
1: {type:Public, notes:N/A, activity:Open Skate ,…}
activity: "Open Skate "
notes: "N/A"
times: [{start:11:30 AM, end:5:00 PM}, {start:7:30 PM, end:9:30 PM}]
0: {start:11:30 AM, end:5:00 PM}
end: "5:00 PM"
start: "11:30 AM"
1: {start:7:30 PM, end:9:30 PM}
end: "9:30 PM"
start: "7:30 PM"
type: "Public"
day: "Monday"

毕竟,我的页面上仍然没有显示结果。

【问题讨论】:

  • 您是否在网络选项卡上的浏览器控制台“Chrome”中查看是否有任何信息可以提供帮助?
  • 是的,我试图将当天的结果传递给控制台,但它只显示了一个红色的“GET”,然后是我定位的 URL。当我在控制台中展开箭头时,它会显示很多 jquery 信息。我不确定在所有这些中寻找什么。
  • 好吧,我看错了你的评论。感谢您指出了这一点。它有帮助,我不需要弄清楚如何解释它。我在预览选项卡中看到了我想在页面中显示的所有内容。但是,页面中没有任何内容。这会让人想起什么吗?再次感谢。

标签: javascript jquery jquery-mobile cross-domain jsonp


【解决方案1】:

因为你添加了 jsonResults 来包装你的 json 数据,这变成了一个 jsonp 请求,而不是一个 ajax 请求了。请谷歌“ajax 和 jsonp 的区别”。

jQuery.ajax({
    url : your url,
    dataType : 'jsonp',
    jsonpCallback : 'jsonResults',
    ......
});

【讨论】:

  • 好的,这里可能是个愚蠢的问题。要使用 getJSON 进行跨域请求,是否需要使用 PHP 或 JAVA 等服务器端语言?出于某种原因,我认为我缺少一些使这项工作有效的关键因素。我的印象是,我只需要一个域上的 .JSON 文件和另一个域上的 index.html,并且我可以在 index.html 文件中使用 getJSON 从 .JSON 文件中获取和显示值。我的印象有错吗?谢谢!
  • 在你的页面中添加一个名为jsonResults的函数,在这个函数中,当请求得到响应时,做你想做的事情。 window.jsonResults = function(ret){//ret 这里是你的json数据}
  • 我在这里看到你的 url 响应。 http://www.zerogravity-web.com/LloydIce/json/skschedule.json 像以前一样用 jsonResults() 包装数据。
猜你喜欢
  • 2021-10-25
  • 1970-01-01
  • 2021-03-17
  • 2013-02-03
  • 1970-01-01
  • 1970-01-01
  • 2011-04-16
  • 2021-11-13
  • 2012-08-09
相关资源
最近更新 更多