将值传递给formmail.cgi而不刷新(HTML表单PHP处理)
我的主机有一个formmail.cgi脚本,用于将html表单数据发送到电子邮件(http://formmail.dreamhost.com/),但我不知道如何传递它理解的值。将值传递给formmail.cgi而不刷新(HTML表单PHP处理)
HTML::
<form id="contact_form" action="http://formmail.dreamhost.com/cgi-bin/formmail.cgi" method="POST">
<input type=hidden name="recipient" value="info#raphaelguilleminot.com">
<input type="hidden" name="subject" value="Message from Raphael's portfolio site" />
<input type=text id="email" class="email default-value" name="email" value="Your email">
<label class="error" for="email" id="email_error">your email is required</label>
<textarea id="message" class="contact_message default-value" name="message" value="your message">Tell me whats on your mind!</textarea><br/>
<input class="submit button" type="submit" value="Send" />
</form>
Jquery的:
$(".button").click(function() {
var dataString = 'recipient=info#raphaelguilleminot.com' + 'name='+ name + '&email=' + email + '&message=' + message;
$.ajax({
type: "POST",
url: "http://formmail.dreamhost.com/cgi-bin/formmail.cgi",
data: dataString,
success: function() {
$('#contact_form').hide().fadeIn(1500)
}
});
return false;
});
});
任何想法使用这种方法来传递表单值
伊夫试过?
为了使它不刷新页面,则需要添加 $('#contact_form').submit(function(){ return false; });
有一两件事我注意到的是,你没有name属性前缀&,而构建自己的URL编码的字符串是好的,你可以使用jquery自动为你做。
集ID对每个表单输入,然后用得到的值:
msg = $('#message').val(); replyto = $('#email').val();
和数据部分:
data:({ recipient:info#raphaelguilleimnot.com, subject:'Message from Raphael's portfolio site', email:replyto, message:msg })
您定义的方式你dataString不正确。
var dataString = 'recipient=info#raphaelguilleminot.com' + 'name=' (...)
实际上应该是
var dataString = 'recipient=info#raphaelguilleminot.com' + '&name=' (...)
此外,你应该宁可使用数组或对象来传递你的数据参数,如
var data = {
recipient: 'info#raphaelguilleminot.com',
name: name,
(...)
}
的jQuery将自动确保您的参数被正确转义。
最后,您应该防止提交按钮的默认行为,以便您可以进行ajax调用。否则,你的页面将加载CGI脚本,实际上发送数据两次(如果ajax调用幸运的话)。
$('#contact_form').submit(function(){
return false;
});
应该这样做。
感谢Guillaume(merci?),就像一个魅力! – Raphael 2010-08-03 10:05:28
感谢您的反馈,我很喜欢SO社区! – Raphael 2010-08-03 10:05:53