我正在尝试在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帮助有问题..
答案 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/