#javascript #jquery #ajax #perl
#javascript #jquery #ajax #perl
Вопрос:
Я действительно новичок как в Perl, так и в Ajax, и мне было интересно, как мне вернуть сообщение для ajax, чтобы узнать, успешно ли запущен скрипт, и запустить сценарий успеха, узнав, что сценарий perl был успешным.
На моей главной HTML-странице у меня есть ajax-скрипт, подобный этому:
$(document).on('click', '.archive-button', function(){
var notice_id = $(this).data('notice_id');
var archiveaddress = '/user/notices/archivenotice/' notice_id;
$.post(archiveaddress, {notice_id: notice_id});
});
которые отправляют его в archivenotice.html страница, на которой запускается Perl-скрипт, который просто отмечает время прочтения уведомления.
my $update_needed = 0;
unless ($notice->read_on()) {
$notice->read_on(scalar localtime);
$update_needed = 1;
}
Что я должен добавить в сценарий Perl на archivenotice.html страницы, чтобы ajax на моей главной HTML-странице знал, что скрипт успешно запущен, и инициировал другой скрипт с именем «successful».
Комментарии:
1. В вашем Perl-скрипте просто
.post
. Затем возьмите эту информацию в своем.post
методе «success».2. Извините, я очень визуальный человек. Не могли бы вы показать мне пример?
3. В дополнение к тому, что сказал @bloodyKnuckles, в конце вашего perl-скрипта сделайте что-то вроде
print "Content-type: text/plainnn"; print qq{"status":"success","updateNeeded":"$update_needed"};
, чтобы вы могли получить конкретный ответ от perl
Ответ №1:
Откройте канал связи между вашим main.html скрипт page и archivenotice на Perl.
main.html
$(document).on('click', '.archive-button', function(){
var notice_id = $(this).data('notice_id');
var archiveaddress = '/user/notices/archivenotice/' notice_id;
$.post(archiveaddress, {notice_id: notice_id}, function( data ) {
if ( data ) { alert('Update needed!'); }
else { alert('Update not needed.'); }
});
});
archivenotice
my $update_needed = 0;
unless ($notice->read_on()) {
$notice->read_on(scalar localtime);
$update_needed = 1;
}
print "Content-type: text/plainnn";
print $update_needed;
exit;
Комментарии:
1. Тип содержимого всегда должен быть включен
2. Хороший звонок. 🙂 Обновлено.
Ответ №2:
Попробуйте это:
$(document).on('click', '.archive-button', function(){
var notice_id = $(this).data('notice_id');
var archiveaddress = '/user/notices/archivenotice/' notice_id;
$.post(archiveaddress, {notice_id: notice_id}).done(function() {
alert( "update success" );
});
});
Комментарии:
1. Это не определяет, был ли Perl действительно успешным, просто если AJAX успешно завершил цикл.