Выполнять CGI каждый раз при нажатии кнопки без изменения текущей html-страницы - PullRequest
1 голос
/ 04 мая 2011

Я начинаю свою стажировку на домашнем сервере, который может управлять множественным оборудованием с веб-страницы. Глобальная идея заключается в том, что на основе нажатия на кнопку на сервере создается определенный сценарий, который управляет микроконтроллером.

Мой репетитор создал простой веб-сайт, который он мне дал, используя AJAX, чтобы всегда оставаться на 1 странице, и выводит меню в соответствии с действиями пользователя (они скрыты, если не используются, возвращаются на передний план, если используются).

Я настроил сервер Apache, который я настроил для выполнения сценариев CGI, и он работает. Чтобы всегда оставаться на одной странице, я использовал трюк с возвратом «204 Нет содержимого», поэтому ответ сервера на страницу «Мне нечего сказать, просто оставайтесь на этой странице».

Но у меня есть одна проблема - CGI запускается только один раз. Если я нажимаю кнопку в первый раз, она работает, после этого ничего не происходит.

Я пытался использовать SSI (shtml) для использования кода кнопки вместо использования FORM с методом GET, но скрипт все равно не будет выполнен дважды.

Возможно, я использую не те инструменты. Должен ли я продолжать идти с CGI? Или есть что-то еще (например, AJAX, jquery), которое на самом деле предназначено для того, что я хочу?

Спасибо, что прочитали.

РЕДАКТИРОВАТЬ: Я нашел способ обойти это (всегда, когда я в отчаянии после нескольких дней искать ответ, я иду на форумы, а затем найти себе хорошее решение в течение следующего часа ....) Я использовал базовую ссылку, и по некоторым причинам она ведет себя иначе, чем при использовании кнопки. Без разницы. Мои допросы по используемым технологиям все еще остаются:)

РЕДАКТИРОВАТЬ2: Мое решение дрянное, по какой-то причине скрипт также вызывается при обновлении страницы (или при первой загрузке страницы). Это странно, потому что, поскольку он в нем, он должен появляться только тогда, когда я нажимаю на него ...

1 Ответ

0 голосов
/ 04 мая 2011

Ознакомьтесь с jQuery и его AJAX API .Вы не можете заставить его не загружать новую страницу, если вы не используете AJAX.Вот пример того, как выглядит вызов AJAX:

$.ajax({
    url: 'http://server.domain.com/cgi-bin/myfile.cgi',
    data: {
       x: 1,
       today: '20110504',
       user: 'Joe'
    }
}).success(function(data, status, xhr) {
    if (data)
        alert(data);
});

Это для jQuery 1.5 или выше.Вы можете запустить это всякий раз, когда нажимается определенная кнопка следующим образом:

HTML для кнопки:

<input type="button" id="doThis"/>

JavaScript:

$(function() {
    $('#doThis').click(function() {
        //put AJAX sample shown above, here
    });
});
...