Как получить информацию из базы данных, используя ajax / json?(Календарь недели jQuery) - PullRequest
0 голосов
/ 13 июля 2011

Я пытаюсь адаптировать следующий модуль календаря jQuery , чтобы интегрировать его с 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 ]

2 голосов
/ 13 июля 2011

если ваша php-страница работает нормально, она должна возвращать массив событий.Таким образом, результатом переменной будет этот массив.Затем вы можете создать структуру {events: result} и передать ее в свой календарь.

success(result){
    var myData = {events: result};//now you have your data in correct format.
}
1 голос
/ 16 апреля 2012

В javascript установите данные для вашего URL

data: '/calendar/getData.php'

И возвращенный JSON должен выглядеть примерно так:

[{"id":1,"start":"2012-09-01T13:15:00","end":"2012-09-01T13:45:00","title":"title"}]
1 голос
/ 01 февраля 2012

Основная проблема, с которой сталкивается большинство людей, заключается в том, что возвращаемые данные находятся не в том формате, который вы ожидаете.

Попробуйте эту комбинацию: Файл 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);

0 голосов
/ 15 декабря 2013
  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. Недельные данные календаря:

on $ calendar.weekCalendar ({... раздел

данные: результат

3.Получить данные из БД

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;
0 голосов
/ 13 июля 2011
$.ajax({
        type: 'POST',
        url: 'test.php',
        dataType: 'json',
        cache: false,
        success: function(result) {

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

        }
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...