doujiyan0971
doujiyan0971
2013-09-03 01:13

通过AJAX将JSON数据发送到数据库

已采纳

I'm having trouble sending a JSON array with AJAX to a PHP file which inserts the information in the correct columns in the database. The jquery and Json works fine, but it seems like the PHP side doesn't get the values correct, or maybe the json isn't encoded correct.

Any ideas how I can fix this?

JSON:

{
"Email": [
    {
        "Name": "My Name",
        "Phone": "1234567",
        "Email": "my@mail.com",
        "Interested_in": "Text text.",
        "User_id": "1"
    }
]
}

PHP:

$timeStamp = time();

$new_email = $_POST['NewMail'];

$email_info = $new_email->Email;

// New Email
mysql_query("INSERT INTO " . $dbPrefix . "touches (date, user_id, name, phone, email, interested_in, seen, status) VALUES ('".safeSQL($timeStamp)."', '".safeSQL($email_info->User_id)."', '".safeSQL($email_info->Name)."','".safeSQL($email_info->Phone)."', '".safeSQL($email_info->Email)."', '".safeSQL($email_info->Interested_in)."', '0', '1')") or die("Query failed: " . mysql_error());

UPDATE:

Jquery for sending to PHP

    $( document ).on('click', '#send_touch', function(){

    new_email = [];

    new_email.push({
    Name: $('#name').val(),
    Phone: $('#phone').val(),
    Email: $('#email').val(),
    Interested_in: $('#interested_in').val(),
    User_id: $('#email_user_id').val()
    });

    new_email = JSON.stringify({Email: new_email}, null, "\t");

        $.ajax({
            url: "core.php",
            type: "post",
            data: { NewMail: new_email
                  },
            success: function(data){  

            },
            error: function(){
            }   
     });    

});

Also tried to change PHP to this:

$timeStamp = time();

$new_email = json_decode($_POST['NewMail']);

$email_info = $new_email->Email[0];

// New Hashtag
mysql_query("INSERT INTO " . $dbPrefix . "touches (date, user_id, name, phone, email, interested_in, seen, status) VALUES ('".safeSQL($timeStamp)."', '".safeSQL($email_info->User_id)."', '".safeSQL($email_info->Name)."','".safeSQL($email_info->Phone)."', '".safeSQL($email_info->Email)."', '".safeSQL($email_info->Interested_in)."', '0', '1')") or die("Query failed: " . mysql_error());
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

1条回答

  • dqssst0144 dqssst0144 8年前

    I believe you are missing the decode on the php side:

    $new_email = json_decode($_POST['NewMail']);
    
    点赞 评论 复制链接分享

为你推荐