API不会从ajax调用中获取任何发布数据

时间:2016-09-30 18:20:55

标签: javascript php jquery ajax

我正在尝试在ajax post call中发送数据。但这并没有发送任何数据。

我的html表单是

free

我的脚本是

<form>
  <div class="row">
    <div class="col-sm-6">
      <div class="form-group">
        <label  for="firstname">Firstname</label>
        <input id="firstname" type="text" class="form-control" id="firstname">
      </div>
    </div>
    <div class="col-sm-6">
      <div class="form-group">
        <label  for="lastname">Lastname</label>
        <input id="lastname" type="text" class="form-control" id="lastname">
      </div>
    </div>
    <div class="col-sm-6">
      <div class="form-group">
        <label  for="email">Email</label>
        <input id="email" type="text" class="form-control" id="email">
      </div>
    </div>
    <div class="col-sm-6">
      <div class="form-group">
        <label for="subject">Subject</label>
        <input id="subject" type="text" class="form-control" id="subject">
      </div>
    </div>
    <div class="col-sm-12">
      <div class="form-group">
        <label for="message">Message</label>
        <textarea id="message" class="form-control"></textarea>
      </div>
    </div>

    <div class="col-sm-12 text-center">
      <a type="submit" class="btn btn-template-main" onclick="sendMail()"><i class="fa fa-envelope-o"></i> Send message</a><span id="sentMessage" style="color:green"></span>

    </div>
  </div>
  <!-- /.row -->
</form>

我的PHP代码是

function sendMail(){
  var name = document.getElementById ("firstname").value + " " + document.getElementById ("lastname").value;
  var subject = document.getElementById ("subject").value;
  var email = document.getElementById ("email").value;
  var message = document.getElementById ("message").value;
  var body = "<h3>Message from "+ name +"</h3>"+
      "<h4>Email: "+ email +"</h4>"+
      "<p><strong>Body : </strong> "+ message +"</p>";
  var email= 'to=tsmrafee@gmail.com&subject=' + subject + '&body=' + body;
  console.log("done");
  $.ajax({
    url: 'http://trimarkworld.com/email.php',
    method: 'POST',
    data: {
      email: email
    },
    success: function(result){
      console.log("done");
      $("#sentMessage").html("Email has been Sent");
    }
  });

}

这不打印任何东西..我认为ajax call.please帮助有问题..

3 个答案:

答案 0 :(得分:3)

当您使用$.ajax发送数据时,它不会以JSON格式发送,而是以application/x-www-form-urlencode格式发送。所以没有必要致电json_decode()。只需使用:

echo $_POST['email'];

答案 1 :(得分:0)

如果序列化关联数组,则应在php中使用json_encode。通常我会发回一个对象,虽然在这种情况下如果你只是发送一个字符串,你不需要对该值进行编码。

if(isset($_POST['email'])){
  echo json_encode($_POST['email']);
}

答案 2 :(得分:0)

您的PHP期待JSON,因此您可能希望传递字符串化的JSON。

此示例将首先解码JSON,然后您可以使用isset。

使用此示例重构您的代码:https://www.sitepoint.com/jquery-php-ajax-json/