2016-09-18 210 views
0

整天我試圖解決問題,但沒有成功。 表單不發送消息,也沒有寫入錯誤。ajax聯繫表格不發送電子郵件

form.html

   <div class="ok" id="ok"></div> 
       <div id="data">    
       <div id="alert" class="alert_ig"></div> 
       <form id="form" class=" clearfix"  method="POST" action=""> 

     <div class="col-sm-12"> 
      <div class="form-group"> 
      <input name="name" type="text" id="name" value="{$smarty.cookies.nameuser}" class="form-control" placeholder="Name"/> 
      </div> 
     </div> 


     <div class="col-sm-12"> 
      <div class="form-group"> 
      <input name="email" type="email" id="email" value="{$smarty.cookies.emailuser}" class="form-control" placeholder="E-mail"/> 
      </div> 
     </div> 
     <div class="col-sm-12"> 
      <div class="form-group"> 
       <textarea id="message" class="form-control" rows="5" name="text" placeholder="Message"></textarea> 

      </div> 
     </div> 

         <div class="col-sm-12"> 
      <div class="form-group"> 
         <button style="margin-top:10px" id="submit" type="submit" class="bot_g">Send</button> 

          </div> 
     </div> 
        </form> 

     <script> 
    $(document).ready(function() { 
    $('#submit').click(function(e){ 
    var form = $(this); 
    var error = false; 
    if (!error) { 
     var data = form.serialize(); 
     $.ajax({ 
      type: 'POST', 
      url: '{$home}/system/modules/contacts/send.php', 
      dataType: 'json', 
      data: data, 
      success: function(data){ 
       if (data.error.length > 0) { 
        $('#alert').html(""+data['error']+""); 
        $('#email').addClass("fill"); 
       } else { 
        $('#ok').html('send.'); 
         $("#data").css("display","none"); 

       } 
      }, 
      return false; 
     )}; 
    }); 
</script> 
          </div> 

send.php

<?php 
    require_once '../../inc/core.php'; 

    $name=Text(trim($_POST['name'])); 
    $email=Text(trim($_POST['email'])); 
    $subject=Text(trim($_POST['subject'])); 
    $text=Text(trim($_POST['text'])); 


if(empty($name)){ 
$json['error'] = 'Come on, you have a name don\'t you?'; 
echo json_encode($json); 
exit; 
} 

if (mb_strlen($name) < 2 || mb_strlen($name) > 250){ 
$json['error'] = 'Your name must consist of at least 2 characters!'; 
echo json_encode($json); 
exit; 
} 

    if(empty($email)){ 
$json['error'] = 'No Email, No Message!'; 
echo json_encode($json); 
exit; 
} 

if (mb_strlen($email) < 5 || mb_strlen($email) > 64){ 
$json['error'] = 'Your email must consist of at least 5 characters!'; 
echo json_encode($json); 
exit; 
} 

if (!filter_var($email, FILTER_VALIDATE_EMAIL)){ 
$json['error'] = 'Unknown characters in your e-mail!'; 
echo json_encode($json); 
exit; 
} 

if(empty($subject)){ 
$json['error'] = 'Um...yea, you have to write something to send this form.'; 
echo json_encode($json); 
exit; 
} 

if (mb_strlen($subject) < 5 || mb_strlen($subject) > 250){ 
$json['error'] = 'Your subject must consist of at least 5 characters!'; 
echo json_encode($json); 
exit; 
} 


if (mb_strlen($text) < 2 || mb_strlen($text) > 10000){ 
$json['error'] = 'Thats All? Really?'; 
echo json_encode($json); 
exit; 
} 

$mailer = new phpmailer(); 
$mailer->ContentType = "text/html"; 

$mailer->From = $email; 

    $mailer->Subject = 'New message from '.$home; 
    $mailer->Body ="Subject: ".$subject."<br/> 
      Name: ".$name."<br/> 
      E-mail: ".$email."<br/> 
      ".nl2br($text); 

    $mailer->AddAddress($setup['emailadmin'], ''); 
    $mailer->Send(); 

    $json['error'] = 0; 
    echo json_encode($json); 
?> 

當是我的問題與此代碼? 我必須使用此send.php格式,但可以改變Ajax和HTML表單的工作...

感謝

+0

1 - $ home:這個變量是打印一個本地路徑還是apache公用文件夾路徑? 2 - 你如何打印這個變量{$ home}? 3 - 爲了能夠更好地進行調試,您必須使用開發人員選項(右鍵單擊,檢查元素),然後打開網絡選項卡,然後單擊按鈕 您將能夠檢查請求數據,請求網址,回覆。所以你可以識別錯誤原因 –

+0

該URL的工作。 $ HOME =(我的網站URL) – Martinovska

+0

所以裏面你的網站,這個路徑是文件的路徑:/system/modules/contacts/send.php 或類似的/ var/www/html等/系統/模塊/聯繫人/ send.php –

回答

0
var form = $(this); 

在這一行$(本);指的是提交按鈕,所以var表單,存儲你的提交按鈕,而不是表單元素本身。

您可能在客戶端看不到錯誤,但如果您嘗試調試發送到服務器端的數據,則會看到有問題。

嘗試用與您的表單元素相匹配的選擇器替換$(this)。

此外,如果您希望在服務器返回錯誤(例如500錯誤)時通知用戶,則可以向您的$ ajax函數添加錯誤回調以及您已有的成功回調。

查看文檔http://api.jquery.com/jquery.ajax/

還要在事件處理程序結束時添加e.preventDefault(),以防止在您要執行ajax提交時提交表單的默認操作。

+0

嘗試但仍然沒有工作。 – Martinovska

+0

你的網址也可能是錯誤的。我沒有看到javascript會如何知道{$ home}是什麼。嘗試對其進行硬編碼以進行調試。 另外,從你擁有它的地方刪除返回false。成功方法之後,我認爲它沒有做任何事情。 – klikas

+0

你想給我一個簡單的嗎?我無法解決問題。 – Martinovska

相關問題