0

我在这里得到的是一个 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

4 回答 4

2

好的,最后一次尝试这个。这对我有用,做你想做的

我的 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>

我的联系方式.php

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

并使用此处的 js 文件

于 2009-06-15T13:23:57.103 回答
0

你为什么不把东西包装在一个setTimeOut调用中。从而延迟ajax请求而不是延迟显示。顺便说一句,原型延迟函数的作用是什么

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

也应该工作

于 2009-06-15T11:37:24.660 回答
0

我再试一次。

改变

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

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

然后再试一次。

并确保你已经实现了reportError你在这里传入的函数

onFailure: reportError

例如

function reportError(request){alert('Shit happens!');}
于 2009-06-15T12:00:47.910 回答
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');

它工作得很好。

于 2013-11-02T19:51:46.180 回答