2013-09-03 3 views
0

У меня возникли проблемы с отправкой массива JSON с AJAX в файл PHP, который вставляет информацию в соответствующие столбцы в базе данных. Jquery и Json отлично работают, но похоже, что сторона PHP не получает правильные значения, или, может быть, json не закодирован правильно.Отправка данных JSON через AJAX в базу данных

Любые идеи, как я могу это исправить?

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 для отправки в 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(){ 
      } 
    });  

}); 

Также т Ried изменить PHP для этого:

$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()); 
+0

$ _POST [ 'Email']? – SenorAmor

+0

Вы не показываете, как вы отправляете данные JSON в ваш PHP-скрипт. Если вы делаете это правильно, вам нужно будет использовать 'json_decode()' для распаковки данных в объект PHP, прежде чем вы сможете получить к нему доступ. –

+0

Я обновил свой ответ кодом $ .ajax – Kim

ответ

2

Я считаю, что вам не хватает декодирование на стороне PHP:

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

Спасибо, я попробовал это, но это все равно не сработало. Тогда может быть другая проблема! – Kim

+0

Я думал, что кто-то еще упомянул, что ваш объект электронной почты - это массив ... поэтому вам нужно указать $ email_info = $ new_email-> Email [0]; Подождите, похоже, вы это исправили. –

+0

Хм, я попробовал добавить [0], а пока нет результатов. – Kim

Смежные вопросы