не срабатывает $.getJSON
Здравствуйте.
$.getJSON("test.php", {}, function(x) { alert(x) }); В случае, когда test.php : $data = $DB -> prep('SELECT `name` FROM `city`') -> fetchAll(PDO :: FETCH_NUM); echo json_encode(array('data' => $data)); алерт срабатывает. Если же test.php : include (some.php); //это содержится в some.php - $data = $DB -> prep('SELECT `name` FROM `city`') -> fetchAll(PDO :: FETCH_NUM); echo json_encode(array('data' => $data)); алерт НЕ срабатывает, т.е. json получается с ошибкой. В чём проблема? |
Возможно, в том, что нужо писать include "some.php";, возможно в самом скрипте some.php… Кто знает?
|
в самом скрипте some.php просто содержится та самая строка из рабочего варианта ($data = $DB -> prep('SELECT `name` FROM `city`') -> fetchAll(PDO :: FETCH_NUM)).
В обоих случаях судя по firebug-у ответ приходит какой и требуется, однако в первом случае он интерпретируется как json а в случае include почему-то нет |
интересные подробности - если перед echo вставить include даже пустого файла, то json уже не проходит, с чем это может быть связяно?
|
А что скрипт возвращает? Такой же json? Что с заголовками. Покажи скриншот панели сети в отладчике, пжлст.
|
Вложений: 2
good.jpg - без include json валидный
bad.jpg - include пустого файла, данные приходят теже самые, однако не воспринимаются как json |
Я вижу, размер ответа различается на три байта. А нет ли у тебя случайно марки BOM в заинклюженном файле?
|
проверил - нету бом. В настройках дримвьювера снята галка создавать с бом.
|
Но файлец-то на три байта длиннее. Чую, дело в них.
|
Оказалось дело в дримвьювере (может быть у меня кривой). При создании файла блокнотом с последующим его инклюдом всё проходит нормально.
|
Часовой пояс GMT +3, время: 11:33. |