Как мне сделать AJAX-запрос к Perl-скрипту, используя событие jQuery blur? - PullRequest
1 голос
/ 12 сентября 2011

Я хочу вызвать скрипт Perl в функции размытия моего поля ввода. Но я действительно не знаю, как это сделать, и я не могу найти какие-либо рабочие вещи с Google. мой код html-страницы

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org /TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Guthaben anzeigen</title>
<link rel="stylesheet" href="css/style.css" type="text/css" /> 
<script src="jquery-1.6.3.js" type="text/javascript"></script>

<script type="text/javascript">
$(document).ready(function(){

    $("#pin").blur(function(){
        alert($.ajax({
    type: "POST",
    url: "/cgi-bin/guthabentransfer.pl",
data: "cardnumber=1234567890",
success: function(msg){
alert(msg);
 }
 });
);
    });

  });
</script>

</head>
<body>
<!-- <div class="haupt"> -->
<form action="/aktivieren.pl" method="post">
<table border="0">
<tr>
        <td align="left">Kaartnummer:</td>
        <td align="left"> <input class="textfeld" name="kartennummer" type="text" maxlength="19"></td>
        <td align="left"><input id="pin" class="pin" name="pinnr" type="text" maxlength="4" value="PIN"></td>
    </tr>
        <tr>
        <td align="left">Balance:</td>
        <td align="left"> <input id="balance" class="textfeld" name="kartennummer" type="text" maxlength="19"></td>

    </tr>

</table>

</div>

</form>
</div>
</body>
</html>

Это мой Perl-скрипт, я думал, что будет проще всего напечатать результат: /.

#!/usr/bin/perl
require "cgi-lib.pl";
use funktionen;
use Getopt::Long;

&GetOptions("cardnumber:s" =>\$cardnumber);
$cardnumber=$query->param('cardnumber');
if ($cardnumber != "") {
    print &funktionen::checkbalance($cardnumber);
}

Ответы [ 2 ]

3 голосов
/ 12 сентября 2011

Вы, кажется, написали скрипт командной строки, предназначенный для взаимодействия с пользователем, который запускает его в оболочке.(Использование Getopt является большой подсказкой).

Чтобы он отвечал на HTTP-запрос, вам нужно переписать его, чтобы он работал с веб-сервером (вместо оболочки).

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

Базовое введение в использование Perl / CGI с Apache доступно в документации Apache .Вам следует взглянуть на такой модуль, как CGI , чтобы правильно обрабатывать входящие данные и отправлять заголовки HTTP.

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

1 голос
/ 13 сентября 2011

Это сработало для меня, назовите это в событии размытия:

function perlExecute(name){
    XMLHttp.open("GET", "/cgi-bin/balance.pl?cardnumber="+name, true);
    XMLHttp.onreadystatechange = function() {
        if (XMLHttp.readyState == 4) {
            $("#balance").val(XMLHttp.responseText);
        }
    }
    XMLHttp.send(null);
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...