jQuery和对象数组

时间:2012-12-12 22:41:14

标签: php javascript jquery ajax json

    $(document).ready(function () {

    output = "";

    $.ajax({

        url: 'getevents.php',

        data: { ufirstname: 'ufirstname' },

        type: 'post',

        success: function (output) {

            alert(output);

            var date = new Date();
            var d = date.getDate();
            var m = date.getMonth();
            var y = date.getFullYear();

            $('#calendar').fullCalendar({
            header: {
            left: 'prev,next today',
            center: 'title',
            right: 'month,basicWeek,basicDay'
            },
            editable: true,
            events: output
            });
        }
    });





});

我有这样的代码,如果我将文字逐字地从我的警告框中复制并替换

events: output

events: [{ id: 1, title: 'Birthday', start: new Date(1355011200*1000), end: new Date(1355011200*1000), allDay: true, url: 'http://www.yahoo.com/'},{ id: 2, title: 'Birthday Hangover', start: new Date(1355097600*1000), end: new Date(1355097600*1000), allDay: false, url: 'http://www.yahoo.com'},{ id: 3, title: 'Sepotomus Maximus Christmas', start: new Date(1356393600*1000), end: new Date(1356393600*1000), allDay: false, url: 'http://www.yahoo.com/'},]

一切正常。我该怎么做才能解决这个问题?我虽然使用events: output将文本放在该位置但似乎没有用。

请提前感谢您的任何意见或解答!

3 个答案:

答案 0 :(得分:3)

由于你没有给我们提供太多信息,我将在黑暗中拍摄,并说浏览器将json解释为文本。因此,在ajax调用中添加dataType属性,以便jQuery可以将返回值解析为json。

$.ajax({

    url: 'getevents.php',
    data: { ufirstname: 'ufirstname' },
    type: 'post',
    dataType: 'json' 
    ......

答案 1 :(得分:1)

如果您在警告框中获取该字符串..您需要使用JSON.parse()将字符串解析为javascript对象

变化

events: output

events: JSON.parse(output)

根据documentation

  

“事件源”是为FullCalendar提供有关事件的数据的任何内容。它可以是一个简单的数组,您定义的事件生成函数,json提要的URL或Google Calendar提要。

     

从版本1.5开始,事件对象可以具有与之关联的“选项”。但是,在开始指定选项之前,必须以扩展形式编写事件对象。它必须是具有属性的传统JavaScript对象。

你的json字符串最后还有一个额外的逗号

答案 2 :(得分:-1)

    $year = date('Y');
$month = date('m');

echo json_encode(array(

    array(
        'id' => 111,
        'title' => "Event1",
        'start' => "$year-$month-10",
        'url' => "http://yahoo.com/"
    ),

    array(
        'id' => 222,
        'title' => "Event2",
        'start' => "$year-$month-20",
        'end' => "$year-$month-22",
        'url' => "http://yahoo.com/"
    )

));

程序实际上想要这种非常特定的json_encode格式,或者它不起作用。我只是通过阅读所有这些回复来解决这个问题。