#jquery #perl #cgi
#jquery #perl #cgi
Вопрос:
Я хотел бы добавлять содержимое в тело, когда я нажимаю на флажок, все в порядке, я нашел, как это сделать.
Моя проблема в том, что я могу добавить только чистый HTML, но я хочу добавить Perl / CGI.
Я объясняю:
$(function() {
$('input:checkbox').change(function(){
var nom = $(this).attr("value");
if ( $(this).is(':checked') ) {
$('body').append($("<div id=" nom ">Switch " nom "</div>"));
}
else {
$("#" nom).remove();
}
});
Что "<div id=" nom ">Switch " nom "</div>"
я могу добавить SwitchGUI->new("switch-rdc-7", 24, 2)
?
SwitchGUI — это написанный мной модуль perl, он выполняет файл perl, рисует переключатель, заполняет информацию для каждого интерфейса…
Вот SwitchGUI.pm
Комментарии:
1. Фу, французский код. Привет всем, кто пишет неанглоязычный код: подумайте о тех, кому, возможно, будет легче читать ваш код в будущем, когда в именах переменных не будет использоваться $random_language. (к вашему сведению, я немец и также разглагольствую о людях, которые используют немецкий язык в своем коде)
2. Вам слишком сложно прочитать 3 буквы по-французски? Это просто имена функций или переменных, это не главное в коде. Первый глупый ответ, который я прочитал на этом сайте. После повторного чтения, французские слова: Erreur (ошибка в английском, не слишком сложный TeethMaster ?), afficher (= отображение), nom (=название).
3. Я не говорил, что это проблема в вашем коде, и это был не ответ, а просто комментарий. Просто общая тирада о неанглоязычном коде.
Ответ №1:
Нет. jQuery запускается в браузере пользователя, ваш код на perl выполняется на вашем сервере; у jQuery нет способа внедрить код на perl в текущую страницу и запустить его. Если вам нужно запустить серверный код, который влияет на то, что отображает браузер, используйте AJAX.
Комментарии:
1. Хорошо, я понимаю, это то, над чем я работал. У вас есть какие-нибудь ссылки / советы, которые помогут мне это реализовать?
2. Не говоря уже о вышедшей из печати книге 1997 года.
3. @eouti: теперь, когда вы знаете, что вам нужно использовать AJAX, введите «jquery ajax» в Google и перейдите по некоторым ссылкам, подобным этой: net.tutsplus.com/tutorials/javascript-ajax /…
Ответ №2:
Это даже проще, чем вы, вероятно, представляете. Судя по внешнему виду этого jQuery, это просто эквивалент document.write при загрузке документа. Что вам нужно, так это CGI URL, чтобы отправить обратно только html для этого раздела.
$.get("get_gui_div.cgi?param=value", function( data ) {
$( "#" nameOfMyDiv ).html( data );
});
В зависимости от сложности вашего CGI, это может быть просто:
#!/usr/local/bin/perl -wT
use strict;
use warnings;
use SwitchGUI;
# ... deal with params ...
print SwitchGUI->new( "switch-rdc-7", 24, 2 );
Но вы должны иметь в виду, что два уровня не могут взаимодействовать друг с другом за пределами HTTP-запросов и ответов. Все, что вы добавите в код для основного документа, будет запущено один раз для отправки документа. Любое динамическое обновление потребует отдельного запроса, и вам, вероятно, придется предоставить параметры, чтобы Perl знал, какой тип текста отправлять обратно, а затем он отправит обратно фрагмент HTML для отправки на уровень Ajax / jQuery (он также может отправлять JSON). Таким образом, вам в значительной степени нужно, чтобы ваши точки подключения были прямыми.
- Новый JavaScript может быть отправлен с фрагментом HTML
- Вы можете заставить свой слой Perl «вставить» в него значения.
- Вы можете настроить что-нибудь для запуска предоставляемого сервером JavaScript при получении, хотя это непросто
Короче говоря, вы отправляете значения в Perl и возвращаете текст, который браузер может оценить, будь то HTML, JSON, XML или даже JavaScript.