我正在尝试注册到我的数据库,但无法以json格式发送它。我通过搜索并在此代码上应用它尝试了很多但是没有结果保存在数据库中。我应该如何以json格式发送数据.... 的 sign_up_jump.js
// JavaScript Document
$('document').ready(function()
{
/* validation */
$("#signup").validate({
rules:
{
firstname: {
required: true,
minlength: 3
},
password: {
required: true,
minlength: 8,
maxlength: 15
},
passwordConfirmation: {
required: true,
equalTo: '#password'
},
email: {
required: true,
email: true
},
},
messages:
{
firstname: "please enter user name",
password:{
required: "please provide a password",
minlength: "password at least have 8 characters"
},
email: "please enter a valid email address",
passwordConfirmation:{
required: "please retype your password",
equalTo: "password doesn't match !"
}
},
submitHandler: submitForm
});
/* validation */
/* form submit */
function submitForm()
{
var data = $("#signup");
var data = JSON.stringify(data);
$.ajax({
type : 'post',
url : 'new_api.php',
data : data,
datatype: 'json',
beforeSend: function()
{
$("#error").fadeOut();
$("#submit").html('<span class="glyphicon glyphicon-transfer"></span> sending ...');
},
success : function(data)
{
if(data.result==1){
$("#error").fadeIn(1000, function(){
$("#error").html('<div class="alert alert-danger"> <span class="glyphicon glyphicon-info-sign"></span> Sorry email already taken !</div>');
$("#submit").html('<span class="glyphicon glyphicon-log-in"></span> Create Account');
});
}
else if(data.result =="registered")
{
$("#submit").html('<img src="btn-ajax-loader.gif" /> Signing Up ...');
setTimeout('$(".form-signin").fadeOut(500, function(){ $(".signin-form").load("login.php"); }); ',5000);
}
else{
$("#error").fadeIn(1000, function(){
$("#error").html('<div class="alert alert-danger"><span class="glyphicon glyphicon-info-sign"></span> '+data+' !</div>');
$("#submit").html('<span class="glyphicon glyphicon-log-in"></span> Create Account');
});
}
}
});
return false;
}
/* form submit */
});
答案 0 :(得分:1)
您的代码中有三位与此相关:
var data = $("#signup").serialize();
这会获取form URL encoded format中的数据。
contentType: 'application/json; charset=utf-8',
此声明您正在发送JSON。由于您拥有表格URL编码格式的数据,这是一个谎言。
$firstname = $_POST['firstname'];
$_POST
仅填充浏览器发送URL编码(或多部分)数据。由于您声称要发送JSON,因此未填充。
快速修复:别说谎了。删除声称您要发送JSON的行。
如果你真的想发送JSON,那么:
你需要同时做到这两点!
回复:Edit:
var data = $("#signup");
var data = JSON.stringify(data);
您尝试将jQuery对象转换为JSON,而不是将您关注的数据从表单提取到对象中并将其转换为JSON。
看看第一个链接问题的作用:
data: JSON.stringify({ "userName": userName, "password" : password })
它没有将jQuery对象传递给JSON.stringify
。
您还完全忽略了您需要对PHP进行的更改(如第二个链接问题中所述)。