有没有办法以json格式发送数据

时间:2016-07-29 10:08:28

标签: php json ajax

我正在尝试注册到我的数据库,但无法以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> &nbsp; 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> &nbsp; Sorry email already taken !</div>');

                                        $("#submit").html('<span class="glyphicon glyphicon-log-in"></span> &nbsp; Create Account');

                                });

                            }
                            else if(data.result =="registered")
                            {

                                $("#submit").html('<img src="btn-ajax-loader.gif" /> &nbsp; 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> &nbsp; '+data+' !</div>');

                                $("#submit").html('<span class="glyphicon glyphicon-log-in"></span> &nbsp; Create Account');

                                });

                            }
                       }
            });
            return false;
    }
   /* form submit */
 });

output

1 个答案:

答案 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,那么:

  1. 阅读this question关于使用jQuery Ajax发送JSON
  2. 阅读this question关于使用PHP读取JSON格式的请求。
  3. 你需要同时做到这两点!

    回复:Edit

    var data = $("#signup");
    var data = JSON.stringify(data);
    

    您尝试将jQuery对象转换为JSON,而不是将您关注的数据从表单提取到对象中并将其转换为JSON。

    看看第一个链接问题的作用:

    data: JSON.stringify({ "userName": userName, "password" : password })
    

    它没有将jQuery对象传递给JSON.stringify

    您还完全忽略了您需要对PHP进行的更改(如第二个链接问题中所述)。