2014-08-28 177 views
-2

有人可以幫我看看這個代碼明顯的東西嗎?問題似乎是嵌入式JavaScript代碼沒有被執行,因此PHP代碼也被跳過了。 HTML和PHP文件都在根目錄中。AJAX代碼沒有執行

的HTML/JS:

<!DOCTYPE html> 
<html lang="en"> 
<head> 
<meta charset="utf-8"> 
<title>jQuery AJAX test form</title> 
<script src="js/jquery.min.js"></script> 
<link href="css/bootstrap.min.css" rel="stylesheet"> 
<script src="js/bootstrap.min.js"></script> 
</head> 
<body> 
<div class="container"> 
    <!-- Contacts --> 
    <div id="contacts"> 
    <div class="row"> 
     <!-- Alignment --> 
     <div class="col-sm-offset-3 col-sm-6"> 
     <p>&nbsp;</p> 
     <p>Some header message here</p> 
     <p>&nbsp;</p> 
     <form name="contact" class="well" id="contact"> 
      <legend>Contact Form</legend> 
      <div class="control-group"> 
      <div class="controls"> 
       <input type="text" class="form-control" placeholder="Name" id="name" /> 
       <p class="help-block"></p> 
      </div> 
      </div> 
      <div class="control-group"> 
      <div class="controls"> 
       <input type="email" class="form-control" placeholder="Email" id="email" required/> 
      </div> 
      </div> 
      <div class="control-group"> 
      <div class="controls"> 
       <textarea rows="10" cols="100" class="form-control" placeholder="Message" id="message" style="resize:none"></textarea> 
      </div> 
      </div> 
      <div id="success"> </div> 
      <button type="submit" class="btn btn-primary pull-right" id="submit">Send</button> 
      <button type="reset" class="btn btn-default pull-right" id="res">Reset</button> 
      <br /> 
     </form> 
     </div> 
    </div> 
    </div> 
</div> 
<script> 
$(function() { 
    $("button#submit").click(function(event){ 
     event.preventDefault(); 
     $.ajax({ 
      type: "POST", 
      url: "process.php", 
      data: $('form.contact').serialize(), 
      success: function(){ 
        alert("success"); 
      }, 
      error: function(){ 
       alert("failure"); 
      } 
     }); 
    }); 
}); 
</script> 
</body> 
</html> 

PHP:

<?php 
    if (isset($_POST['name'])) { 
     $name = strip_tags($_POST['name']); 
     $email = strip_tags($_POST['Email']); 
     $message= strip_tags($_POST['message']); 
     echo "Name  =".$name."</br>"; 
     echo "Email  =".$email."</br>"; 
     echo "Message  =".$message."</br>";  
     echo "<span class=\"label label-info\" >your message has been submitted .. Thank you</span>"; 
    } 
?> 
+0

嘗試'submit'事件,而不是'click'事件 – 2014-08-28 15:41:17

+0

不能確定,但​​似乎你只是定義一個函數在那裏,這不叫,所以代碼沒有加載。你嘗試用'$(document).ready(function(){'? – cgf 2014-08-28 15:41:24

+1

@cgf,'$(function()')完全等價於$(document).ready函數()'。見:http://api.jquery.com/ready/ – Sparky 2014-08-28 16:00:03

回答

4

選擇器應該是

$( '形式#接觸')

代替

$( 'form.contact')

作爲接觸是一個id。

+0

好趕上。不幸的是,這將沒有解決這個問題,甚至沒有被訪問,但感謝您的評論,因爲這將是一件讓我擔心的事情,一旦我處理了主要問題, – 2014-08-28 16:09:25

+0

瀏覽器控制檯是否有錯誤?F12? – SSA 2014-08-28 16:10:04

+0

不,我沒有發現任何錯誤,這裏的問題是,我對ajax和調試器是全新的,所以我有一些東西在這裏做,至少知道如何繞過螢火蟲。 – 2014-08-28 18:03:46

0

這會工作,如果你的鏈接是正確的(process.php),你有這兩個jQuery庫鏈接(說實話,我不是100%,如果你需要兩個,或只有一個或什麼,但我知道兩者之間,阿賈克斯作品)。

您的表單中沒有名稱,只有佔位符,所以沒有輸入。這是真正的問題。例如:<input type="text" id="Name" name="Name" placeholder="Name" />

如果它仍然不起作用,那麼您的問題超出了代碼中顯示的範圍。

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> 
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.4/jquery-ui.min.js"></script> 
<script> 
$(document).ready(function() { 
    $("#contact").submit(function(){ 
     $.ajax({ 
      type: "POST", 
      url: "process.php", 
      data: $('#contact').serialize(), 
      success: function(result){ 
        $('#contacts').html(result); 
        // alert("success"); 
      }, 
      error: function(){ 
       alert("failure"); 
      } 
     }); 
    return false; 
    }); 
}); 
</script> 

process.php頁:

<?php print_r($_REQUEST); 
// $_REQUEST['name'] has to be an input name in the form. Yours probably has $_REQUEST['Name'] (notice "name" vs "Name") 
    if (isset($_REQUEST['name'])) { 
     $name = strip_tags($_REQUEST['name']); 
     $email = strip_tags($_REQUEST['Email']); 
     $message= strip_tags($_REQUEST['message']); 
     echo "Name  =".$name."</br>"; 
     echo "Email  =".$email."</br>"; 
     echo "Message  =".$message."</br>";  
     echo "<span class=\"label label-info\" >your message has been submitted .. Thank you</span>"; 
    } 
?> 
+0

太棒了!更靠近一步了,添加ajax頭文件讓ajax代碼執行d,但是php代碼被跳過了。我給html添加了'name'標籤,但是沒有。你讓我更接近解決方案。多謝。 – 2014-08-28 18:00:00

+0

在你的php頁面切換到$ _REQUEST而不是$ _POST – Rasclatt 2014-08-28 18:03:16

+0

我想如果你想要做$ _POST,你可能必須在你的AJAX中做一個json數據類型。 – Rasclatt 2014-08-28 18:09:45