我的主机有一个formmail.cgi脚本,用于将html表单数据发送到电子邮件(http://formmail.dreamhost.com/),但我不明白如何传递它理解的值。
我尝试使用此方法传递表单值:
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;
});
});
有什么想法吗?
答案 0 :(得分:1)
为了不刷新页面,您需要添加
$('#contact_form').submit(function(){ return false; });
我注意到的一件事是你没有加前缀&amp;对于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
})
答案 1 :(得分:1)
您定义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;
});
应该做的伎俩。