将值传递给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 })

+0

感谢您的反馈,我很喜欢SO社区! – Raphael 2010-08-03 10:05:53

您定义的方式你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; 
}); 

应该这样做。

+0

感谢Guillaume(merci?),就像一个魅力! – Raphael 2010-08-03 10:05:28