2016-09-18 100 views
1

這裏是我的javascript讀碼變量值:

function submitForm() { 
 
    var name = document.getElementsByName('name').value 
 
     ,email = document.getElementsByName('email').value 
 
     ,subject = document.getElementsByName('subject').value 
 
     ,body = document.getElementsByName('body').value; 
 
    
 
    $.post('php/sendForm.php', {name: name,email: email,subject: subject,body: body}); 
 

 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<form> 
 
    <div class="form-group inline-block" method="post" action="php/sendForm.php" > 
 
    <input type="text" class="form-control" name="name" placeholder="Name"></div> 
 
    <div class="form-group inline-block"> 
 
    <input type="email" class="form-control" name="email" aria-describedby="emailHelp" placeholder="Enter email"> 
 
    <small id="emailHelp" class="form-text text-muted">Send me an email!</small> 
 
    <input type="text" class="form-control" name="subject" aria-describedby="emailHelp" placeholder="Subject"> 
 
    </div> 
 
    <div class="form-group"> 
 
    <label for="exampleTextarea">Message</label> 
 
    <textarea class="form-control" name="body" rows="3"> 
 
    </textarea> 
 
    </div> 
 
    <button onclick="submitForm()" type="submit" class="btn btn-primary">Submit           </button> 
 
</form>

所有這一切都意味着由php/sendForm.php讀取。 但是,我似乎無法讀取我的php文件中的名稱,電子郵件,主題和身體變量。 這裏是php代碼:

$name = $_POST['name']; 
$email = $_POST['email']; 
$subject = $_POST['subject']; 
$body = $_POST['body']; 
// The message 
$message .= $email. $name. $body ; 
+0

你一定形式不提交,並重新加載頁面。 – adeneo

+0

@adeneo雅,它重新加載和所有內容 –

+0

你怎麼知道你不能讀取值?你輸出什麼東西? –

回答

2

的問題很可能是你沒有正確使用JavaScript在submitForm功能 -

的getElementsByName返回元素的數組類集合 - 所以你需要指出你正在選擇哪一個。請注意,我已將[0]添加到每個指定的元素。

function submitForm() { 
    var name = document.getElementsByName('name')[0].value 
     ,email = document.getElementsByName('email')[0].value 
     ,subject = document.getElementsByName('subject')[0].value 
     ,body = document.getElementsByName('body')[0].value; 

    $.post('php/sendForm.php', {name: name,email: email,subject: subject,body: body}); 
} 

而且 - 否則,你將提交表單,然後再就沒有價值了AJAX功能後 - 你不該如果通過AJAX提交其對形式的動作或方法。

一個簡單的辦法,以防止重複提交是從表單中刪除的按鈕,並讓它有一個類型=「按鈕」屬性:

<button onclick="submitForm()" type="button" class="btn btn-primary">Submit</button> 

,我會走這麼遠來的onlclick結合事件處理函數和ajax調用並刪除內聯js(注意,我給出了表單的名稱「myForm」,並使用serialize()方法從表單收集所有相關數據,而沒有明確獲取每個輸入的值: -

//html 
    <button id="submitFormButton" type="button" class="btn btn-primary">Submit</button> 

//js 
$('#submitFormButton').click(function(){ 
    var formData = $('[name=myForm]').serialize(); 
    var URL = 'php/sendForm.php'; 
     $.post(URL, formData,function(data) { 
     //function to perfrom on the returned data 
     }); 
}); 
+0

確實,這是另一個問題。通過我們的答案,我們解決了這個問題:D –

+0

@NiettheDarkAbsol你們很棒<3 –

+0

@Niet the Dark Absol - 很好的結合知識來完成工作:) – gavgrif

2

您沒有撥打preventDefault的事件。這意味着,在提交表單(使用GET和自己的網址,因爲這些都是默認值)

嘗試:

<button onClick="submitForm(); return false;"> 
+0

現在它的作品感謝你和@ gavgrif –

+0

非常愛夥計<3 –