2013-03-15 66 views
2

我是jQuery的新手。我正在嘗試提交聯繫表單,並顯示一封感謝信給我們反饋。我看了一下NetTuts +的教程,我的表單沒有被提交。這裏是我的代碼:jQuery/Ajax聯繫表格不工作

jQuery的

<script src="jquery.js"></script> 
<script> 
    $(document).ready(function() { 
     $('.error').hide(); 
     $("#submitButton").click(function() { 
      $('.error').hide(); 
      var name = $("input#name").val(); 
      if (name == "") { 
       $("label#name_error").show(); 
       $("input#name").focus(); 
       return false; 
      } 
      var email = $("input#email").val(); 
      if (email == "") { 
       $("label#email_error").show(); 
       $("input#email").focus(); 
       return false; 
      } 
      var companyName = $("#usermessage").val(); 
      if (companyName == "") { 
       $("label#message_error").show(); 
       $("input#usermessage").focus(); 
       return false; 
      } 
      var subject=$("#subject option:selected").text(); 
      var dataString = 'name='+ name + '&email=' + email + '&message=' + companyName; 
      //alert (dataString);return false; 
      $.ajax({ 
       type: "POST", 
       url: "mailer.php", 
       data: dataString, 
       success: function() { 
        $('#contact_form').html("<div id='message'></div>"); 
        $('#message').html("<h2>Contact Form Submitted!</h2>") 
         .append("<p>We will be in touch soon.</p>") 
         .hide() 
         .fadeIn(1500, function() { 
          $('#message').append("Thank you"); 
         }); 
       } 
      }); 
      return false; 
     }); 
    }); 
</script> 


PHP

<?php 
    $mailTo = '[email protected]'; 
    $name = htmlspecialchars($_POST['name']); 
    $mailFrom = htmlspecialchars($_POST['email']); 
    $subjectNumber = htmlspecialchars($_POST['subject']); 
    $message_text = htmlspecialchars($_POST['msg']); 
    switch ($subjectNumber) 
    { 
     case 0: 
      $subject='Sales'; 
      break; 
     case 1: 
      $subject='Careers'; 
      break; 
     case 2: 
      $subject='Other'; 
      break; 
    } 
    $dataString=htmlspecialchars($_POST['dataString']); 
    //$message = 'From: '.$name.'; Email: '.$mailFrom.' ; Message: '.$message_text; 

    $sendcon=mail($mailTo, $subject, $message); 
    if (isset($_GET["ajax"])) { 
     echo $sendcon ? "success" : "error"; 
    } else { 

} 

?> 

的問題是,在按下提交按鈕,沒有任何反應。在JavaScript控制檯上沒有錯誤。 我認爲我的php是不正確的,並沒有聽Ajax數據,因爲Apache的錯誤日誌說PHP Notice: Undefined index: dataString

我在哪裏出錯? 感謝

編輯:我是一個Ubuntu的機器上本地主機上運行此,我已經建立了郵件服務器,並用測試電子郵件測試它

+0

如果您進入Chrome - >網絡並點擊「提交」,您應該會看到HTTP請求。表單看起來是否正確地將數據傳遞給服務器? – 2013-03-15 06:09:49

+0

發佈您的HTML表單代碼 – Samy 2013-03-15 06:09:57

+1

dataString不存在於您在ajax調用中設置爲數據的url中。 – EmCo 2013-03-15 06:11:15

回答

0

你應該嘗試以下操作:

$.post("mailer.php", { name: "John", email: "[email protected]" }); 
+0

嘿...感謝您的鏈接... 但我最終使用這個[鏈接]的json方法(http://www.catchmyfame.com/2012/03/05/whats-the-best-jquery -method-for-retrieve-ajax-data /) – lazyprogrammer 2013-03-27 04:12:18

0

如果我們也能看到你的表單代碼,這將會很有用。我已經在這裏編寫了一個教程:http://blog.fraser-hart.co.uk/ajax-contact-form-tutorial/

您可以下載這些文件並將它們與您的想法進行比較。請仔細閱讀並通知我,如果您對任何工作有任何疑問,我會指出您的方向正確

+1

嘿...感謝您的鏈接... 但是我最終使用了這個[link]的json方法(http://www.catchmyfame.com/2012/03/05/whats-the-best-jquery-for-retrieval-ajax-data /) – lazyprogrammer 2013-03-27 04:10:52

+0

沒有probs。讓我知道如果你遇到任何東西 – Fraser 2013-03-27 13:44:09

+0

我被困在Ajax [再次](http://stackoverflow.com/questions/15826776/ajax-php-not-working-correctly) – lazyprogrammer 2013-04-05 05:48:29