-3
#!/usr/bin/perl
print "Content-type: text/html \n\n";
print qq(<html>
<head>
<script type="text/javascript" src="/jquery.js"></script>
<script>
jQuery(document).ready(function(){
jQuery("#form_lang").submit(function(e){

    var str = jQuery(this).serialize();
    alert("dfdaf"); 
    jQuery.ajax({
        type: "POST",
        url:"contacts.pl",
        success: function(){
        jQuery("#note").ajaxComplete(function(event, request, settings){
                    if(msg == 'OK') 
                            alert("Your message!");
                });
            },
          });
});
});
</script>
</head>

これがフォームの部分です:

<form id ="form_lang" action="helloworld.pl" method="POST">
<p>Enter Language: </p>
<input type="text" id="lang" name="lang"  /><br/>
<p>Enter Description: </p>
<textarea id="lang_desc" name="lang_desc"  ></textarea><br/>
<input type="submit" value="submit"  />

ここで、コントロールはalert( "dfdaf")になります。その後、helloworld.plに送信されます...contacts.plは参照されていません。次に電話をかける方法は?よろしくお願いします

4

2 に答える 2

0

あなたは「PerlからAjaxを呼び出す」のではありません。

あなたはPerlでJavascriptを書いています。

Javascriptはサーバーから送信され、ブラウザで実行されます。

そして、ブラウザは「contacts.pl」を見つけていないと思います。

Q:ブラウザウィンドウにエラーメッセージ(「404」や「500」など)が表示されますか?

Q:サーバーのエラーログやアクセスログに何か表示されますか?

于 2012-06-08T08:21:25.490 に答える
0

フォームを送信すると、送信イベントが発生します。これにより、送信ハンドラーがトリガーされ、Ajaxリクエストが開始されます。

その後、ブラウザは通常どおりフォームを送信します(何もフォームを停止していないため)。

ブラウザは新しいページをロードし、JavaScriptが実行されていた環境を削除します。Ajaxはキャンセルされます(リクエストがサーバーに到達する可能性がありますが、レスポンスはブラウザによって処理されません)。

フォームの送信時に何かをしたい場合は、helloworld.pl

ページを離れずにサーバーと通信する場合は、Ajaxを使用します。

(フォームの送信をキャンセルし、JSを使用してAjaxリクエストが戻ってきたときに再送信することもできます…しかし、それは非常に複雑で非効率的です)。

于 2012-06-08T08:27:46.710 に答える