2012-01-24 10 views
1

通常、メッセージなどの動的生成HTMLページを出力するPerlスクリプトを実行する既存のコードを更新しようとしています。 a divは、新しいページにユーザーを送信するのではなく、Perlファイルの出力を使用します。PerlでjQuery ajax()を使用すると、成功時にフリッカーが発生する

私はこれを行うための最善の方法を見つけようとしています。 Perl側でこれを行う方法を見つけられなかった後、私は今jQuery ajax()を見ています。ここで

は、私がこれまで持っているもので、それは部分的に取り組んでいる:

たPerl:

#!/usr/bin/perl 
# ===================================================================== 

print "Content-type: text/html \n\n"; 
print "<p>Hello</p>"; 

HTML:

<form id="myForm" action="#"> 
    <input type="submit" value="click me" /> 
</form> 

<div id="message"></div> 

jQueryの/ JavaScriptを:

012私はボタンをクリックすると
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 
<script type="text/javascript"> 
    $(document).ready(function() { 
     $('#myForm').submit(function() { 
      $.ajax({ 
       type: 'POST', 
       url: '/cgi-bin/myPerl.cgi', 
       async: false, 
       success: function(data) { 
        $('#message').html(data); 
       } 
      }); 
     }); 
    }); 
</script> 

1)#messagedivは第二のためのメッセージが点滅し、それがブランクになります。なぜそれが起こっているのですか?これが私の主な質問です。私も完全にthe documentationの私の読書にもかかわらず、.ajax()のすべての設定を理解していない

2)私はasync: falseを使用する場合にのみそうtrueか、この設定を除外して、すべてで動作しますが、私が取得a "リソースの読み込みに失敗しました"エラー。誰かが説明できますか?

3)これを行うより良い方法はありますか? PHP?私はちょうどdivをPerlファイルから来るメッセージで動的に更新し、ページのリフレッシュや新しいページを避けるだけです。

答えて

4

サブミットイベントにreturn falseまたはe.preventDefault()を追加します。

$('#myForm').submit(function(e) { 
     e.preventDefault() 
     $.ajax({ 
      type: 'POST', 
      url: '/cgi-bin/myPerl.cgi', 
      async: false, 
      success: function(data) { 
       $('#message').html(data); 
      } 
     }); 
     // return false; 
    }); 
+0

Doh!私は完全に理解しているはずです。ありがとうございました...それを修正しました。私の質問の他の部分についての考えは? – Sparky

+0

これは#1と#2が固定されているはずです。私はあなたが#3で意味することは肯定的ではありません –

+0

また、 'async:false'はもう必要ありません。 –

関連する問題