Погода: −13 °C
28.11−14...−7ясная погода, без осадков
29.11−11...−7пасмурно, небольшой снег
  • Здравствуйте!

    Опыта программирования на javascript нет, но вот приходится писать на нем некоторые вещи, по ходу дела возникает куча вопросов, так как времени детально разобрать все языковые конструкции нет к сожалению:хммм:. Большинство ответов можно нагуглить, но вот одна проблемка никак не поддается:хммм:. На стороне сервера крутится fcgi-ка, которая по get-запросу что-то делает и отсылать ответ о своих деяниях в формате json. Пишу в скрипте:
    $.getJSON(url, function(data) {
    ...
    return true;
    });

    url - это строчка с адресом fcgi-ки. Если эту строку распечатать и скопировать в строку браузера, fcgi-ка отрабатывает. А из скрипта - никак, хоть стреляйся, в логах апача ничего о попытке дернуть fcgi-ку нет. Как все же заставить javascript вызвать ее?

  • 1. js код работает?
    2. ошибки в js консоли?
    3. $.getJSON(url) - так тоже не работает?
    4. запрос делается на тот же самый сервер где находится страница?
    5. переписать через .ajax() ?

    Исправлено пользователем IEEE (06.12.12 16:27)

  • 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>

  • 1. Да, если закомментить попытку достучаться до cgi-ки, то все выполняется.
    2. Где эта консоль?:смущ:Проверяю в фаерфоксе со включенным фаербагом, про ошибки ничего не пишет.
    3. Тоже
    4. да
    5. не пробовала так, не знакома с ajax'ом :dnknow: . А через js вообще никак?:хммм:

  • 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 в браузере

    Исправлено пользователем IEEE (06.12.12 19:42)

  • url на том же домене находится, что и страница?

    Non solum oportet, sed etiam necessese est

  • Консоль пишет $ is not defined. На JQuery так же ругается... Что-то проинициализировать надо?

  • Все находится на локалхосте.

  • В ответ на: Консоль пишет $ is not defined.
    в этом причина, значит файл с Jquery или не добавлен на страницу или добавлен не правильно.

    Вставьте на http://pastebin.com/ весь html и покажите.

  • У вас не подключена Jquery библиотека


    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script>

    тут идет ваш код.

  • Большое вам спасибо, разобралась, подключала
    <script src="js/jquery.js"></script>

    вместо
    <script src="js/jquery.min.js"></script>

    :улыб:
    Towahawk, вам тоже большое спасибо!

    Теперь еще вопрос: ставлю брейкпойнт на сточку с getjson, запускаю скрипт, на брейкпонте нажимаю в отладчике на сделать шаг на следующую инструкцию, потом выполнить скрипт до конца, тогда fcgi-ка отрабатывает. Если просто скрипт запустить без отладки или не ставить брейкпойнтов - нет:хммм:. С чем это может быть связано?

  • а в чем вы брейкпоинт ставите?

    Non solum oportet, sed etiam necessese est

  • В фаербаге.

  • Чудес не бывает, код или работает или нет, вопрос в том как Вы интерпретируете результат.

  • Не, я понимаю, что не бывает:улыб:. Но бывает так, что при дебаге и просто при выполнении по-разному инициализируются переменные, или играет роль задержка, которая возникает при поставленном брейкпойнте, но джаваскрипт вроде как весь в одном потоке выполняется... Сужу по логу, моя cgi-ка при старте рапортует об этом в лог и после исполнения тоже. Так вот в одном случае сообщения в логе есть, в другом пусто, причем ситуация стабильно воспроизводится при описанных условиях.

  • Смотрите по запросам в FireBug'e на вкладке Net дергается ли урл. Если дергается, но функция в getjson реального ничего не сделала (не вызвался алерт, например), то JSON не валидный.

  • можете написать что возвращает ваш скрипт по адресу url? какой формат?

  • До последнего буду надеяться, что человек прочитал доку на $.getJSON. :-)
    Такое поведение (когда call-back функция не выполняется) может быть, когда полученный из url JSON не валиден.

  • Ставьте брейкпоинт внутри функции которая принимает результат и там уже смотрите, что пришло с сервера.

    "Только так, только личная инициатива и напряженная работа над собой. .. Нужно своей собственной рукой все делать" (с) В.В. Путин:улыб:(а не на "вертикаль власти" надеяться)

Записей на странице:

Перейти в форум

Модератор: