JQuery.getJson не запускается должным образом - PullRequest
0 голосов
/ 02 января 2011

Я пытаюсь использовать JSON для получения динамического контента на моей веб-странице, используя javascript. Что-то не так, и у меня есть проблема, чтобы понять, что это может быть. В Firebug я вижу, что JSON-данные получаются так, как должны. При поиске в Firebug в разделе «DOM» URL-адрес, к которому я обращаюсь для страницы (созданная мной страница, а не URL-адрес для JSON-данных), окрашивается в красный цвет (см. Скриншот ниже). Вот мой JavaScript:

    $(document).ready(function() { 

        $('#target').click(function() {                 

            alert("At least I',m reached ");

            $.getJSON('http://localhost/timereporting/phpscriptlibrary/get_remaining_hours.php', function(data) {

                    document.getElementById('errorDiv').innerHTML = "Divtext";
                    alert("Inside getJason");
            });
            alert("At least I',m done ");

        });

Это значительная часть моего php-файла:

$json_string = "{\"activities\": "; 

$json_string = $json_string."[";

for ( $counter = 0; $counter < $num; $counter += 1) {

          $json_string = $json_string."[".mysql_result($rows,$counter,'date').", \"".mysql_result($rows,$counter,'activity_id')."\", ".mysql_result($rows,$counter,'hours')."]"; 

          if($counter != ($num-1)){
            $json_string = $json_string.", ";
          }

} 

$json_string = $json_string."]}";

echo $json_string;

Я предполагаю, что "эхо" - это способ "отправить" JSON-данные в javascript?

Одна странная вещь состоит в том, что в firebug JSON-данные представлены двумя различными способами. Если вы посмотрите на приведенные ниже скриншоты, на втором есть даты, например «1988» или аналогичные, а на первом даты более полные, например «2010-12-10». На первом снимке экрана показано, как это должно быть, и вот как я пытаюсь отправить его, и, очевидно, в какой-то момент его получают таким образом.

Почему мой тег div не обновляется с указанием даты или того, что предупреждение внутри $ .getJSON не сработало, только предупреждение до и после?

alt text

alt text

alt text

1 Ответ

6 голосов
/ 02 января 2011

Вы неправильно создаете строки JSON.Каждая строка должна быть заключена в двойные кавычки.Но 2010-12-10 нет, и jQuery оценивает это как 2010 - 12 - 10 = 1988.

Не создавайте строку вручную, используйте json_encode, что-то вроде:

$data = array();

while(($row = mysql_fetch_array($result))) {
    $data[] = array($row['date'], intval($row['activity_id']), intval($row['hours']));
}

echo json_encode(array('activities' => $data));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...