我在这里得到的是一个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']!");
应用延迟后,名称不再响应!怎么了?
答案 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');
它工作正常。