2016-09-18 98 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 –