簡體   English   中英

為什么這個 ajax 調用正確的 php 腳本沒有返回任何內容?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM