![](/img/trans.png)
[英]Why is this AJAX call to the correct php script not returning anything?
[英]Why is this ajax call to the correct php script not returning anything?
我有這個 AJAX:
function sendMail () {
$.post('php/sendMail.php', function(result){
alert(result);
})
}
$('#submitContact').click(function(){
sendMail();
})
還有這個 PHP:
<?php
$trimmed = array_map('trim', $_POST);
$message = $trimmed['message'];
$email = $trimmed['email'];
$name = $trimmed['name'];
if (empty($message)) {
$message = FALSE;
}
if (empty($email)) {
$message = FALSE;
}
if (empty($name)) {
$message = FALSE;
}
if ($message && $email && $name){
$body = "From: $name.\n \n $message";
mail(/*some email*/, 'Website Contact Form Submission', $body, "From: $email");
echo ('success');
}
echo($message.' '.$email.' '.$name);
?>
定義的所有 html 元素都存在。 當我運行它時,所有返回的是一個空白警報框(這意味着 PHP 腳本沒有打印出成功)。 知道為什么它不發送郵件嗎?
您似乎沒有使用POST
發送任何數據。
如果您嘗試提交表單,請嘗試以下操作:
$.post('php/sendMail.php',$('form').serialize(), function(result){
alert(result);
})
編輯:正如 Tomalak 在評論中正確指出的那樣,您需要指定要序列化的表單。 我通常會給表單一個id
並使用它:- $('#myform').serialize()
您沒有向該 URL 發送任何數據。
您看到一個空警報框的原因是因為$email
和$name
是空的,因為您沒有傳遞任何$_POST
變量。
當你回顯它時, $message = FALSE
是空白的。
嘗試更改此行
echo($message.' '.$email.' '.$name);
至
var_dump($message.' '.$email.' '.$name);
你會看到$message.' '.$email.' '.$name
$message.' '.$email.' '.$name
$message.' '.$email.' '.$name
.
知道為什么它不發送郵件嗎?
簡而言之,你沒有要求它。
$.post
的語法是:
jQuery.post(url,[數據,][成功(數據,textStatus,jqXHR),][數據類型])
jQuery 的工作方式,您可以跳過data
參數並仍然提供以下參數,但在這種情況下,您根本沒有為您的 PHP 腳本傳遞任何數據。
假設#submitContact
是您要提交的表單中的一個按鈕,您應該序列化該表單的內容並將其作為POST
數據發送:
function sendMail($form) {
$.post('php/sendMail.php', $form.serialize(), function(result) {
alert(result);
});
}
var $btn = $('#submitContact');
var $frm = $btn.parents('form');
$btn.click(function() {
sendMail($frm);
});
(注意:我的一些變量開頭的$
是故意的;在我的代碼中 jQuery 對象的名稱以$
開頭是個人選擇。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.