Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用ajax提交数据获取结果,但不获取联系人表单_Javascript_Php_Jquery_Ajax_Contact - Fatal编程技术网

Javascript 使用ajax提交数据获取结果,但不获取联系人表单

Javascript 使用ajax提交数据获取结果,但不获取联系人表单,javascript,php,jquery,ajax,contact,Javascript,Php,Jquery,Ajax,Contact,我有一个jQuery在线测试,我想一旦用户提交,将结果连同用户的联系信息一起发送给主持人 我让它工作,正确地发送结果信息,问题是它不发送用户信息 我一直在玩不同的解决方案,我可以管理或拥有用户信息或测验结果,但不能同时拥有这两个 这是“联系方式”: 这是我的PHP <?php $name = $_POST['name']; $email = $_POST['email']; $message = $_POST['message']; $results = $_POST['results']

我有一个jQuery在线测试,我想一旦用户提交,将结果连同用户的联系信息一起发送给主持人

我让它工作,正确地发送结果信息,问题是它不发送用户信息

我一直在玩不同的解决方案,我可以管理或拥有用户信息或测验结果,但不能同时拥有这两个

这是“联系方式”:

这是我的PHP

<?php $name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$results = $_POST['results'];
$formcontent="From: $name \n Message: $message \n Results: \n $results";
$recipient = "myemail@gmail.com";
$subject = "my subject";
$mailheader = "From: $email \r\n";
mail($recipient, $subject, $formcontent, $mailheader) or die("Error!");
echo "Your email has been send, thank you";
?>
通过#按钮而不是#表单,我从联系人表单接收信息,但不再从结果中接收信息

同样通过保留#表单,我收到了测验结果,表单内容的值很少,但占位符中的信息却没有!,以下是我通过电子邮件收到的信息:

"
From:
 Message:
 Results:
 <div> Question 1 is true</div><div> Question 2 is false\</div><div> Question 3 is true\</div>\<div> Question 4 is false\</div>\<div> Question 5 is false\</div>\<div class=\"totalScore\">\<br>Your total score is 2 / 5\</div>\<div class=\"totalScore\">\<br>CONGRATULATION, YOUR LEVEL IS A1.1\</div
"
”
发件人:
信息:
结果:

问题1是正确的问题2是错误的\问题3是正确的\\问题4是错误的\\\\\
问题5是错误的\\\\\
祝贺你,你的成绩是A1.1\当你发出ajax请求时,你没有在php文件中收到表单值,你必须在ajax请求中明确地发送它们

  $.post('submit.php',function(result){

          $('#responseMessage').html(result);
    });

   <?php $email = $_POST['email'] // error ?>  
   why? because you have not set the post variable email 
考虑下表

 <form action="submit.php">
    <input type="email" name="email" id="email"/>
    <input type="submit" value="send"/>  
 </form> 
案例2Ajax方式

使用ajax提交表单时,不会在php文件中隐式接收表单值,因为
ajax
请求不知道表单元素,因此必须在ajax请求中显式发送值

  $.post('submit.php',function(result){

          $('#responseMessage').html(result);
    });

   <?php $email = $_POST['email'] // error ?>  
   why? because you have not set the post variable email 
php

<?php $name = $_POST['username'];
       $email = $_POST['email'];
       $message = $_POST['message'];
       $results = $_POST['results'];
       $results = strip_tags($results); // add this to remove html tags and all
       $formcontent="From: $name \n Message: $message \n Results: \n $results";
       $recipient = "thibault.rolando@gmail.com";
       $subject = "my subject";
       $mailheader = "From: $email \r\n";
       mail($recipient, $subject, $formcontent, $mailheader) or die("Error!");
       echo "Your email has been send, thank you";
 ?>


要在php中删除html标记,您有一个名为
strip_tags();

的函数,您需要发送表单数据和结果字符串

请尝试以下操作:

$(function() {


  $('#form').on('submit',function(e) { e.preventDefault();
        //grab the form data into array
        var formData = $('#form').serializeArray();
        //add your result and subject
        formData.push({ results:$('#resultKeeper').html(), subject:'Subject of your e-mail'});
        $.ajax({
              url:'submit.php',
              type:'POST',
              data:formData,
              success:function() {
                  $('#responseMessage').html()
              }
    });
    return false;

});

最好使用以下方法获取表单输入值:

var data = $('#yourformid').serielize();

您将以序列化格式获取数据并将其放在ajax数据参数上。

ajaz
中的
z
代表什么?此外,它的拼写为
quick
(1 z)如果您只是没有显示完整的显示,html中没有id为
resultKeeper
的元素,因此您正在尝试检索
.html()
从一个不存在的元素开始,我将所有内容都放在这个JSFIDLE中,谢谢你的帮助,非常感谢,它工作得非常好!!!它更有意义,很高兴了解它!!我有最后一个问题,我完美地收到了结果,唯一的问题是我们可以在上面看到一些html代码,它看起来与结果完全一样:问题1是真正的问题2是错误的问题3是正确的问题4是错误的问题5是错误的
你的总分是2/5
祝贺,你的等级是A1.1,有没有办法让等消失在电子邮件中?非常感谢!!听起来很愚蠢,但我怎么接受它?我是这个网站的新手…还有一件事…当我提交时,我没有成功的混乱从我的submit.php文件出现的年龄…你知道如何解决这个问题吗?我试图编辑你的答案只是为了改进格式,但不能,因为字符限制任何方式plz编辑
   var uemail = $("#email").val(); // get the email 
   // Set email and send it through ajax   
   $.post('submit.php',email:uemail,function(result){

          $('#responseMessage').html(result);
    });

   <?php $email = $_POST['email'] // works perfect ?>
 <form action="submit.php" method="POST" id="quesForm">
     <label>Name</label>
     <input name="username" type="text" placeholder="Type Here">
     <label>Email</label>
     <input name="email" type="email" placeholder="Type Here">
     <label>Message</label>
     <textarea name="message" placeholder="Type Here"></textarea>
     <input id="button" type="submit" value="Send" class="btnShowResult">
 </form>
$(function() {
   $('#quesForm').on('submit',function(e) { 
    e.preventDefault();
    // I am fetching the form values you could get them by other selectors too
    var uname = $("input[name=username]").val(); 
    var uemail = $("input[name=email]").val();
    var msg = $("textarea").val()
    $.post('submit.php',{username:uname,email:uemail,message:msg,results:$('#resultKeeper').html(),subject:'Subject of your e-mail'},function(result){
          // result variable contains your response text
          // I guess you trying to update your response 
         // notice I have used html(result) as you have just used html()
          $('#responseMessage').html(result);
    });
      // you dont require `return false`
      // you have already did it using e.preventDefault();
  });
}); 
<?php $name = $_POST['username'];
       $email = $_POST['email'];
       $message = $_POST['message'];
       $results = $_POST['results'];
       $results = strip_tags($results); // add this to remove html tags and all
       $formcontent="From: $name \n Message: $message \n Results: \n $results";
       $recipient = "thibault.rolando@gmail.com";
       $subject = "my subject";
       $mailheader = "From: $email \r\n";
       mail($recipient, $subject, $formcontent, $mailheader) or die("Error!");
       echo "Your email has been send, thank you";
 ?>
$(function() {


  $('#form').on('submit',function(e) { e.preventDefault();
        //grab the form data into array
        var formData = $('#form').serializeArray();
        //add your result and subject
        formData.push({ results:$('#resultKeeper').html(), subject:'Subject of your e-mail'});
        $.ajax({
              url:'submit.php',
              type:'POST',
              data:formData,
              success:function() {
                  $('#responseMessage').html()
              }
    });
    return false;
var data = $('#yourformid').serielize();