2011-07-13 5 views
0

私は次のようにjQuery calendar moduleをPHPとMySQLデータベースに統合しようとしています。私がいる問題は、次のようなコードをロードするイベントということである。ajax/jsonを使用してデータベースから情報を取り出す方法は? (jQuery Weekカレンダー)

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()。

ありがとうございます。

答えて

2

PHPページが正常に動作している場合、イベントの配列を返す必要があります。変数の結果はその配列になります。構造{events:result}を作成してカレンダーに渡すことができます。

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

しかし、ajax呼び出しは非同期であるため、呼び出しの外で変数を使用できるようにするにはどうすればよいですか? – Cyl

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

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

     } 
    }); 
1

ほとんどの人が持っている重要な問題は、戻ってくるのデータは、あなたが期待した形式ではないということです。

この組み合わせ試してください:あなたのURLに

data: '/calendar/getData.php' 

をjavascriptの集合データで

 
    $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); 

1

とJSONは何かする必要があります返さ: JSファイル:

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

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

       } 
      }); 

PHPファイルをこれに似て:

[{"id":1,"start":"2012-09-01T13:15:00","end":"2012-09-01T13:45:00","title":"title"}] 
0
  1. Ajaxリクエスト

    VaRの結果;

2.Week

$.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); 
    } 
}); 
カレンダーデータ:DBから結果

3.Getデータ:

$ calendar.weekCalendar({...セクション

データに

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; 
関連する問題