原型Ajax.Updater延迟无法正常工作

时间:2009-06-15 11:29:01

标签: ajax prototypejs delay

我在这里得到的是一个Ajax.Updater原型js函数。它以这种方式完美地运作:

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);

(不要介意剧本效果)

contact.php中有一个echo函数,如下所示:

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

应用延迟后,名称不再响应!怎么了?

4 个答案:

答案 0 :(得分: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

中的js文件

答案 1 :(得分:0)

为什么不把这个东西包裹在setTimeOut电话中。因此延迟了ajax请求而不是延迟显示。哪个是原型延迟函数的功能

但是

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

也应该有用

答案 2 :(得分:0)

我再试一次。

更改

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

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

再试一次。

并确保您已实施了此处传递的reportError功能

onFailure: reportError

e.g。

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

答案 3 :(得分:0)

这并不适用于原来提出的问题 - 但是因为我在搜索中遇到了这个帖子。想我发布我的结果。

我有一些代码,ajax更新程序突然停止工作:

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

它之所以不起作用,是因为我在www.mydomain.com上(与mydomain.com相对)

我只是将其改为:

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

它工作正常。