javascript: вопросы новичка
6901
18
Infinity_nsu
guru
Здравствуйте!
Опыта программирования на javascript нет, но вот приходится писать на нем некоторые вещи, по ходу дела возникает куча вопросов, так как времени детально разобрать все языковые конструкции нет к сожалению. Большинство ответов можно нагуглить, но вот одна проблемка никак не поддается. На стороне сервера крутится fcgi-ка, которая по get-запросу что-то делает и отсылать ответ о своих деяниях в формате json. Пишу в скрипте:
url - это строчка с адресом fcgi-ки. Если эту строку распечатать и скопировать в строку браузера, fcgi-ка отрабатывает. А из скрипта - никак, хоть стреляйся, в логах апача ничего о попытке дернуть fcgi-ку нет. Как все же заставить javascript вызвать ее?
Опыта программирования на javascript нет, но вот приходится писать на нем некоторые вещи, по ходу дела возникает куча вопросов, так как времени детально разобрать все языковые конструкции нет к сожалению. Большинство ответов можно нагуглить, но вот одна проблемка никак не поддается. На стороне сервера крутится fcgi-ка, которая по get-запросу что-то делает и отсылать ответ о своих деяниях в формате json. Пишу в скрипте:
$.getJSON(url, function(data) {
...
return true;
});
url - это строчка с адресом fcgi-ки. Если эту строку распечатать и скопировать в строку браузера, fcgi-ка отрабатывает. А из скрипта - никак, хоть стреляйся, в логах апача ничего о попытке дернуть fcgi-ку нет. Как все же заставить javascript вызвать ее?
IEEE
experienced
1. js код работает?
2. ошибки в js консоли?
3. $.getJSON(url) - так тоже не работает?
4. запрос делается на тот же самый сервер где находится страница?
5. переписать через .ajax() ?
2. ошибки в js консоли?
3. $.getJSON(url) - так тоже не работает?
4. запрос делается на тот же самый сервер где находится страница?
5. переписать через .ajax() ?
IEEE
experienced
6. в firebug тоже не видно что запрос улетает до url?
по туториалу работает:
серверная часть:
<?php
$arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
echo json_encode($arr);
клиентская часть:
<script type="text/javascript">
jQuery.noConflict();
jQuery(document).ready(function(){
jQuery.getJSON("json.php", {1:1}, function(data){
alert("JSON Data: " + data.a);
});
});
</script>
по туториалу работает:
серверная часть:
<?php
$arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
echo json_encode($arr);
клиентская часть:
<script type="text/javascript">
jQuery.noConflict();
jQuery(document).ready(function(){
jQuery.getJSON("json.php", {1:1}, function(data){
alert("JSON Data: " + data.a);
});
});
</script>
Infinity_nsu
guru
1. Да, если закомментить попытку достучаться до cgi-ки, то все выполняется.
2. Где эта консоль?Проверяю в фаерфоксе со включенным фаербагом, про ошибки ничего не пишет.
3. Тоже
4. да
5. не пробовала так, не знакома с ajax'ом . А через js вообще никак?
2. Где эта консоль?Проверяю в фаерфоксе со включенным фаербагом, про ошибки ничего не пишет.
3. Тоже
4. да
5. не пробовала так, не знакома с ajax'ом . А через js вообще никак?
IEEE
experienced
1. А как Вы видите что выполняется? Если алерт вставить после Вашего куска кода(не комментируя его) он появится?
2. CTRL + SHIFT + J - это консоль, очистите её, обновите web страницу с JS кодом, смотрите Errors
...
5. Это тоже самое, я имею ввиду http://stackoverflow.com/questions/3506208/jquery-ajax-cross-domain
6. в FireBug'e cмотрите вкладку Net - там отдельно строкой должен появится запрос к Вашей cgi-ке
я думаю, что дело в п.2 , нужно смотреть ошибки JS в браузере
2. CTRL + SHIFT + J - это консоль, очистите её, обновите web страницу с JS кодом, смотрите Errors
...
5. Это тоже самое, я имею ввиду http://stackoverflow.com/questions/3506208/jquery-ajax-cross-domain
6. в FireBug'e cмотрите вкладку Net - там отдельно строкой должен появится запрос к Вашей cgi-ке
я думаю, что дело в п.2 , нужно смотреть ошибки JS в браузере
Mad_Dollar
guru
url на том же домене находится, что и страница?
Infinity_nsu
guru
Консоль пишет $ is not defined. На JQuery так же ругается... Что-то проинициализировать надо?
Сейчас читают
Пойти учеником к программисту
80179
37
Дозор
121721
1000
Дебилостихоплетение...NF!!!
4086
9
IEEE
experienced
Консоль пишет $ is not defined.в этом причина, значит файл с Jquery или не добавлен на страницу или добавлен не правильно.
Вставьте на http://pastebin.com/ весь html и покажите.
Towahawk
member
У вас не подключена Jquery библиотека
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script>
тут идет ваш код.
Infinity_nsu
guru
Большое вам спасибо, разобралась, подключала
вместо
Towahawk, вам тоже большое спасибо!
Теперь еще вопрос: ставлю брейкпойнт на сточку с getjson, запускаю скрипт, на брейкпонте нажимаю в отладчике на сделать шаг на следующую инструкцию, потом выполнить скрипт до конца, тогда fcgi-ка отрабатывает. Если просто скрипт запустить без отладки или не ставить брейкпойнтов - нет. С чем это может быть связано?
<script src="js/jquery.js"></script>
вместо
<script src="js/jquery.min.js"></script>
Towahawk, вам тоже большое спасибо!
Теперь еще вопрос: ставлю брейкпойнт на сточку с getjson, запускаю скрипт, на брейкпонте нажимаю в отладчике на сделать шаг на следующую инструкцию, потом выполнить скрипт до конца, тогда fcgi-ка отрабатывает. Если просто скрипт запустить без отладки или не ставить брейкпойнтов - нет. С чем это может быть связано?
IEEE
experienced
Чудес не бывает, код или работает или нет, вопрос в том как Вы интерпретируете результат.
Infinity_nsu
guru
Не, я понимаю, что не бывает. Но бывает так, что при дебаге и просто при выполнении по-разному инициализируются переменные, или играет роль задержка, которая возникает при поставленном брейкпойнте, но джаваскрипт вроде как весь в одном потоке выполняется... Сужу по логу, моя cgi-ка при старте рапортует об этом в лог и после исполнения тоже. Так вот в одном случае сообщения в логе есть, в другом пусто, причем ситуация стабильно воспроизводится при описанных условиях.
IEEE
experienced
Смотрите по запросам в FireBug'e на вкладке Net дергается ли урл. Если дергается, но функция в getjson реального ничего не сделала (не вызвался алерт, например), то JSON не валидный.
Towahawk
member
можете написать что возвращает ваш скрипт по адресу url? какой формат?
До последнего буду надеяться, что человек прочитал доку на $.getJSON. :-)
Такое поведение (когда call-back функция не выполняется) может быть, когда полученный из url JSON не валиден.
Такое поведение (когда call-back функция не выполняется) может быть, когда полученный из url JSON не валиден.
tolstopuz
v.i.p.
Ставьте брейкпоинт внутри функции которая принимает результат и там уже смотрите, что пришло с сервера.