2014-08-30 83 views
0

我不知道我的代碼有什麼問題,但我的AJAX不起作用。我已經包含了jQuery庫文件,但是當我調用AJAX時,程序不會加載PHP文件。正如你在下面看到的,.ajax調用有一個「mail.php」的URL,但是在提交時,這個文件從不加載。我可以手動將表單的動作標籤命名爲「mail.php」,但只是加載了「mail.php」,這打破了AJAX的觀點。我究竟做錯了什麼?AJAX沒有得到應用形式

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> 

<form method="post" name="myForm" action="tac.php"> 
    <label>Name:</label> <br /> 
    <input name="sender"> 
    <br /> <br /> 

    <label>Email address:</label><br /> 
    <input name="senderEmail"> 
    <br /> 
    <label>Message:</label> <br /> 
    <textarea rows="5" cols="20" name="message"></textarea> 
    <br /> <br /> 

    <input type="submit" name="submit"> 
</form> 
<script> 

    $(document).ready(function() { 

     $("#myForm").submit(function() { 

    var roy = new Object(); 
    roy.sender = $('#sender').val(); 
    roy.senderEmail = $('#senderEmail').val(); 
    roy.message = $('#message').val(); 

    var jo = JSON.stringify(roy); 

    $.ajax({ 

      type: "POST", 
      url: "mail.php", 
      data: {roy: jo}, 
      success: function(msg){ 
      alert(msg); 
      } 

     }); 
    return false; 
    }); 
     }); 
</script> 
+0

'動作=「tac.php」'和'網址:「mail.php」' - 衝突? – 2014-08-30 16:53:03

+0

使用F12鍵打開控制檯,看看你得到了什麼錯誤,如果有的話。 – 2014-08-30 16:55:03

+0

@ Fred-ii- .ajax應該覆蓋表單的動作url,即使我將「tac.php」更改爲「 mail.php「,它仍然不會像AJAX那樣處理幕後的表單。 – 2014-08-30 16:59:17

回答

1

變化

<form method="post" name="myForm" action="tac.php"> 

<form method="post" id="myForm" action="tac.php"> 

此代碼

$("#myForm") 

正在尋找使用id = 「myForm會」 的元素不NAME = 「myForm的」

Cheers

0

它不起作用,因爲您試圖觸發不存在的id事件。

$("#myForm").submit(function() { id爲 「myForms」 它不< form>標籤中<形式

放ID = 「myForm的」 存在>,它會正常工作。

像這樣:<form method="post" id="myForm" action="tac.php">並刪除名稱=「myForm的」,因爲這對錶單標籤沒有用......