2010-08-01 126 views
0

我的主機有一個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; 
    }); 
}); 

任何想法使用這種方法來傳遞表單值

伊夫試過?

回答

1

爲了使它不刷新頁面,則需要添加 $('#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

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; 
}); 

應該這樣做。

+0

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