使用Jquery将php字符串数据转换为Json对象

ami*_*osh 0 javascript php jquery json

我需要从PHP到jquery获取一些Json数据.

我需要在javascript方法中使用以下格式.

function returnJson()
{
   return {
            events: [
            {
                "id": 1,
                "start": new Date(2013, 4, 26, 12),
                "end": new Date(2013, 4, 26, 13, 30),
                "title": "Lunch with Mike"
            },
            {
                "id": 2,
                "start": new Date(2013, 4, 27, 14),
                "end": new Date(2013,4, 27, 14, 45),
                "title": "Dev Meeting"
            }]
       };
}
Run Code Online (Sandbox Code Playgroud)

为此,我在javascript中执行以下操作:

function returnJson()
{
    var eventResult = $.getJSON("../PHP/PhpAction.php?f=fetchCalendarEvent");
    return eventResult;
}
Run Code Online (Sandbox Code Playgroud)

在PHP中:

 function fetchCalendarEvent()
          {
              $tablename = "tb_calendar";

              $sql = "SELECT eventId,userId,enentName,eventText,EXTRACT(YEAR FROM startTime) AS startyear,EXTRACT(MONTH FROM startTime) AS startMonth,EXTRACT(DAY FROM startTime) AS startDay,EXTRACT(HOUR FROM startTime) AS startHour,EXTRACT(MINUTE FROM startTime) AS startMin,EXTRACT(YEAR FROM endTime) AS endyear,EXTRACT(MONTH FROM endTime) AS endMonth,EXTRACT(DAY FROM endTime) AS endDay,EXTRACT(HOUR FROM endTime) AS e`enter code here`ndHour,EXTRACT(MINUTE FROM endTime) AS endMin FROM ".$tablename." WHERE userId='".$_SESSION['userid']."' AND isActive=1";

                        $q = mysql_query($sql);
                        $i=1;           
                        $eventData="{events: [";

                        if (!mysql_num_rows($q)) {
                            echo 'No records found';
                        }
                        else
                        {                                           
                            while ($row = mysql_fetch_assoc($q)) {

                                $eventData.="{'id':".$row['eventId'].",";


                                $eventData.="'end': new Date(".$row['startyear'].",".$row['startMonth'].",".$row['startDay']."," .$row['startHour'].",".$row['startMin']."),";

                                $eventData.="'start': new Date(".$row['endyear'].",".$row['endMonth'].",".$row['endDay'].",".$row['endHour'].",".$row['endMin']."),";

                                $eventData.="'title':'".$row['enentName']."'},";

                                $i++;
                            }                   
                        }   
                        $eventData= rtrim($eventData, ",");

                        $eventData.="]}";
                        echo json_decode($eventData);
          }
Run Code Online (Sandbox Code Playgroud)

我检查firebug php方法返回的数据如下:

{ events: [ {
        'id': 2,
        'end': new Date(2013, 4, 27, 18, 38),
        'start': new Date(2013, 4, 27, 18, 38),
        'title': 'test'
    }, {
        'id': 3,
        'end': new Date(2013, 4, 23, 11, 0),
        'start': new Date(2013, 4, 23, 14, 15),
        'title': 'testing23'
    }
] }
Run Code Online (Sandbox Code Playgroud)

谁能帮帮我吗.我是php新手.任何帮助将受到高度赞赏.

Öme*_*Gül 5

Php有一个名为json_encode的函数,它将处理json输出的生成.

这是一个例子:

$o = array();
$o['events'] = array();
while ($row = mysql_fetch_assoc($q))
{
    $event = array();
    $event['id'] = $row['id'];
    $event['start'] = "new Date(".$row['startyear'].",".$row['startMonth'].",".$row['startDay']."," .$row['startHour'].",".$row['startMin'].")";
    $event['end'] = "new Date(".$row['endyear'].",".$row['endMonth'].",".$row['endDay'].",".$row['endHour'].",".$row['endMin'].")";
    $event['title'] = $row['title'];

    $o['events'][] = $event;
}

return json_encode($o);
Run Code Online (Sandbox Code Playgroud)

而javscript代码可能是这样的:

function returnJson()
{
    var events = $.getJSON("../PHP/PhpAction.php?f=fetchCalendarEvent");

    for (var i = 0; i < events.length; i++) {
        var event = events[i];
        event.start = eval(event.start);
        event.end = eval(event.end);

        events[i] = event;
    }

    return events;
}
Run Code Online (Sandbox Code Playgroud)