Kim
Kim

Reputation: 1156

Sending JSON data via AJAX to database

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": "[email protected]",
        "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());

Upvotes: 0

Views: 751

Answers (1)

Arthur Frankel
Arthur Frankel

Reputation: 4705

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

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

Upvotes: 2

Related Questions