如何使用ajax / json从数据库中检索信息? (jQuery周日历)

时间:2011-07-13 14:52:47

标签: ajax json jquery

我正在尝试调整以下jQuery calendar module以将其与PHP和MySQL数据库集成。我遇到的问题是代码加载事件:

  return {
     events : [
        {
           "id":1,
           "start": new Date(year, month, day, 12),
           "end": new Date(year, month, day, 13, 30),
           "title":"Lunch with Mike"
        },
        {
           "id":2,
           "start": new Date(year, month, day, 14),
           "end": new Date(year, month, day, 14, 45),
           "title":"Dev Meeting"
        },
        {
           "id":3,
           "start": new Date(year, month, day + 1, 17),
           "end": new Date(year, month, day + 1, 17, 45),
           "title":"Hair cut"
        }
     ]
  };

我想将其更改为从数据库中检索事件的AJAX查询。但我无法弄明白该怎么做。到目前为止,我想过使用JSON从一个调用数据的单独PHP页面获取信息,但是如何操作数据以返回正确的对象呢?

到目前为止,我有这样的事情:

  $.ajax({
        type: 'POST',
        url: 'test.php',
        dataType: 'json',
        cache: false,
        success: function(result) {
            //how can I copy the results to be able to return them?
        }
    });

然后在test.php中我有类似

的东西
    $sql = $db->query("SELECT * FROM calendar;");

    $results = array();
    while($row = mysql_fetch_assoc($sql))
    {
       $results[] = array(
          'id' => $row['id'],
          'start' => $row['start'],
          'end' => $row['end'],
          'title' => $row['title']
       );
    }
    echo json_encode($results);

请记住,我还必须通过新的Date()传递开始值和结束值。

感谢您的时间。

5 个答案:

答案 0 :(得分:2)

如果您的php页面正常工作,它应该返回一系列事件。所以变量结果就是那个数组。然后,您可以创建结构{events:result}并将其传递给您的日历。

success(result){
    var myData = {events: result};//now you have your data in correct format.
}

答案 1 :(得分:1)

大多数人的关键问题是,返回的数据不符合您期望的格式。

试试这个组合: JS文件:

            $.ajax({
                type : 'POST',
                url : 'ajax_handle.php',
                dataType : 'json',
                data: { },
                success: function( jsondata ){

                    $.each( jsondata, function(i, item) {
                        alert( jsondata[i].start );
                    });

                }
            });

PHP文件:

    $sql = $db->query("SELECT * FROM calendar;");

    $results = array();
    while($row = mysql_fetch_assoc($sql))
    {
       $results[] = array(
          'id' => $row['id'],
          'start' => $row['start'],
          'end' => $row['end'],
          'title' => $row['title']
       );
    }
    echo json_encode($results);

答案 2 :(得分:1)

在javascript中设置数据到您的网址

data: '/calendar/getData.php'

返回的JSON应该与此类似:

[{"id":1,"start":"2012-09-01T13:15:00","end":"2012-09-01T13:45:00","title":"title"}]

答案 3 :(得分:0)

$.ajax({
        type: 'POST',
        url: 'test.php',
        dataType: 'json',
        cache: false,
        success: function(result) {

        $("title").html(result.title);
        $("start").html(result.start);

        }
    });

答案 4 :(得分:0)

  1. Ajax请求

    var result;

    $.ajax({
        type: 'POST',
        url: 'Service/jsonService.aspx/GetItems',
        data: "{'userID':'" + userID + "'}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        async: false,
        error: function (xhr, ajaxOptions, thrownError) {
        },
        success: function (msj) {
           result = JSON.parse(msj.d);
        }
    });
    
  2. 2.Week日历数据:

    $ calendar.weekCalendar({... 部分

    )上

    数据:结果

    3.从db

    获取数据
    var query = (from t in dc.Calendar
                             where t.Status== 1
                                 && t.UserID== userID
                             select t).ToList();
    
    sb.Append("[");
    
    foreach (var item in query)
    {
         sb.Append(" { ");
         sb.Append("\"id\": \"" + item.ID + "\", ");
         sb.Append("\"start\": \"" + item.DateItem.Year + "-" + item.DateItem.Month + "-" + item.DateItem.Day + "T" + item.StartTime+ "\", ");
                    sb.Append("\"end\": \"" + item.DateItem.Year + "-" + item.DateItem.Month + "-" + item.DateItem.Day + "T" + item.EndTime+ "\", ");
         sb.Append("\"title\": \"" + item.Title + "\"");
         sb.Append(" }, ");
    }
    
    result = sb.ToString().Substring(0, sb.ToString().Length - 2) + "]";
    
    return result;