1

我正在尝试通过 Ajax 进行设置,这就是我目前所拥有的。我一直试图弄清楚这一点,但似乎无法点击。

function getFunction()
{
$(".cals").click(function()
{
    $.get("http://events.cs50.net/api/1.0/calendars?campus=GSD&output=json", function(data, status) 
    {

        var response = "<h3>GSD Calenders</h3>\n";


        response = response + '<ul data-role="listview" data-inset="true" data-filter="true">\n';

        var jsonObject = JSON.parse(data);
        for (var i = 0; i < jsonObject.length; i++) {
            var calendar = jsonObject[i].calname;
            response = response
                + '<li><a href="#item">'
                + calendar
                + '</a></li>\n'; }


        response = response + '</ul>';


        $('#calendars').html(response);
    });
});
}
4

1 回答 1

1

这是一个工作小提琴:http: //jsfiddle.net/rW9gx/1/

我已将 js 更改为:

$(function() {

    $("#cals").click(function()
    {
        $.getJSON("http://events.cs50.net/api/1.0/calendars?campus=GSD&output=json", function(data, status) 
        {

        var response = "<h3>GSD Calenders</h3>\n";
        response = response + '<ul data-role="listview" data-inset="true" data-filter="true">\n';

            for (var i = 0; i < data.length; i++) {
                var calendar = data[i].calname;
                response = response
                    + '<li><a href="#item">'
                    + calendar
                    + '</a></li>\n'; 
            }
            response = response + '</ul>';
            $('#calendars').html(response);
        });
    });

});

一些东西:

您已将 click 事件处理程序包装在一个函数 ( getFunction) 中,这意味着该处理程序仅在触发后才会应用。我不知道这是否有意,或者您的代码示例是否已满,但在小提琴中,我已将其删除并将 js 包装在一个文档就绪函数中,以便在 DOM 有时应用它加载。

我将 json 更改$.get为 a $.getJSON,这只是dataType: "json"$.ajaxor$.get调用中编写的快捷方式。这意味着您不必将返回数据解析为 Json,因为这是您所期望的。

否则它工作得很好。

于 2013-04-15T02:50:10.400 回答