2009-06-15 8 views
0

私がここにいるのは、Ajax.Updaterプロトタイプのjs関数です。プロトタイプAjax.Updaterが遅れて正しく動作しない

new Ajax.Updater('feedback', 'contact.php', { 
    method: 'post', 
    parameters: Form.serialize($('contactForm')), 
    onFailure: reportError 
}); 

しかし、私は少しプロセスを遅らせたいと思います。私は、プロトタイプのIRCチャンネルに周り尋ね、これは移動するための方法だ:

var feedback = function() { 
    new Ajax.Updater('feedback', 'contact.php', { 
     method: 'post', 
     parameters: Form.serialize($('contactForm')), 
     onFailure: reportError 
    }); 

    new Effect.Highlight('feedback', { 
     duration: 1 
    }); 
} 
feedback.delay(1.5); 

(ドントンScriptaculousの効果を気)

次のようになりますcontact.phpにおけるエコー機能があります:

echo("Thanks for your message $_POST['Name']!"); 

遅延を適用すると、名前はエコーされなくなりました。どうしましたか?

+0

javascriptでエラーが報告されましたか?どれ? firefoxのツール - >エラーコンソールを試してみてください。 – alamar

答えて

1

最後に試してみてください。これは私のために動作し、何をしたいん

私のhtmlファイル

<html> 
    <head> 
     <title>asd</title> 
     <script type="text/javascript" src="src/prototype.js"></script> 
     <script type="text/javascript" src="src/scriptaculous.js"></script> 
     <script type="text/javascript"> 
      var feedback = function() { 
       var params = Form.serialize($('contactForm')); 
       new Ajax.Updater('feedback', 'contact.php', { 
        method: 'post', 
        parameters: params, 
        onFailure: reportError, 
        asynchronous:true 
       }); 

       new Effect.Highlight('feedback', { 
        duration: 1 
       }); 
      } 
      function reportError(request) { alert("error");} 

     </script> 
    </head> 
    <body> 
     <form id="contactForm"> 
      <p>Name:<br><input name="Name" type="text" size="30" maxlength="30"></p> 
      <input name="sendbutton" type="button" value="Send" onClick="feedback.delay(1.5);"> 
     </form> 
     <div id="feedback">foo</div> 
    </body> 
</html> 

マイcontact.php

<?php 
echo("Thanks for your message ".$_POST['Name']."!"); 
?> 

here

0

setTimeOutコールで物事をラップしてみませんか?したがって、表示を遅らせるのではなく、ajax要求を遅らせる。どのところでexcatlyプロトタイプ遅延機能はまた、私はそれを別の試みを与える

+0

私は物事をsuccesなしでsetTimeout呼び出しにラップしようとしました。 ポイントは:Ajax.Updaterはチェーン内にあり、表示自体は遅れる必要があります。引数として Prototypeの遅延機能は、素敵な選択肢だろうと私はまた、最初にそれを試してみましたが、Firebugのは、私は、このエラーを与える: __method.applyは__method.apply(__メソッド、引数を返す[このエラーにブレーク]機能 ではありません); – richard

0

を動作するはず

しかし

new Ajax.Updater.delay(2, 'feedback', 'contact.php', { 
    method: 'post', 
    parameters: Form.serialize($('contactForm')), 
    onFailure: reportError 
}); 

を行うものです。

echo("Thanks for your message ".$_POST['Name']."!"); 

変更

echo("Thanks for your message $_POST['Name']!"); 

し、再試行してください。

そして、例えば

onFailure: reportError 

あなたがここに渡すあなたが reportError機能を実装していることを確認してください

function reportError(request){alert('Shit happens!');} 
+0

動作しません:(reportErrorは定義されています – richard

+0

私は示唆した別のエコーの変形を試しましたか? – jitter

+0

そして、reportErrorと呼ばれていますか? – jitter

0

このdoesnのからJSファイルを使用して尋ねられた元の質問には適用されませんが、私は検索でこのスレッドを見つけたので、私は私の結果を掲載すると思った。

私はAjaxのアップデータが突然、作業を停止し、いくつかのコードを持っていた:私はwww.mydomain.comにあった(mydomainをするのではなくので、それは私のために働くのdidnt

new Ajax.Updater('my_id, 'http://mydomain.com/my_script.php'); 

理由。COM)

私は単純にそれを変更:

new Ajax.Updater('my_id, 'my_script.php'); 

、それがうまく働きました。

関連する問題