Я пытаюсь передать объект JSON, который выглядит примерно так:Передача JSON объект PHP скрипт
{"service": "AAS1", "sizeTypes":[{"id":"20HU", "value":"1.0"},{"id":"40FB","2.5"}]}
Только примечание: В sizeTypes, Есть в общей сложности около 58 элементов в массиве.
Когда пользователь нажимает кнопку отправки, мне нужно отправить объект в скрипт PHP для запуска запроса UPDATE. Вот Javascript, который должен быть отправки JSON в PHP скрипт:
$('#addNewSubmit').click(function()
{
var payload = {
name: $('#addservice').val();
sizeTypes: []
};
$('input.size_types[type=text]').each(function(){
payload.sizeTypes.push({
id: $(this).attr('id'),
value: $(this).val()
});
});
$.ajax({
type: 'POST',
url: 'api/editService.php',
data: {service: payload},
dataType: 'json',
success: function(msh){
console.log('success');
},
error: function(msg){
console.log('fail');
}
});
});
Используя описанную выше функцию щелчка, я пытаюсь отправить объект к PHP скрипт ниже, который находится в апи/editService.php:
<?php
if(isset($_POST['service']))
{
$json = json_decode($_POST['service'], true);
echo $json["service"]["name"] . "<br />";
foreach ($json["service"]["sizeTypes"] as $key => $value){
echo $value["value"] . "<br />";
}
}
else
{
echo "Nooooooob";
}
?>
у меня нет запроса UPDATE на месте еще потому, что я даже не уверен, если я правильно передавая JSON. В функции javascript click вы видите функции SUCCESS и ERROR. Все, что я создаю, это функция ERROR в консоли Chrome.
Я не уверен, где ошибка ... в javascript или php.
Я не был уверен, нужно ли мне отображать ФОРМУ, откуда идет объект. Если необходимо, сообщите мне, и я уточню вопрос.
На данный момент, пожалуйста, помогите мне выяснить, почему я могу только создать функцию ошибки в сообщении AJAX.
спасибо.
**** EDIT ****
Я удалил DATATYPE в вызове Ajax, и добавил JSON.stringify к данным:
$.ajax({
type: 'POST',
url: 'api/editService.php',
data: {servce: JSON.stringify(payload)},
success: function(msg){
console.log('success');
},
error: function(msg){
console.log('fail'), msg);
}
});
В PHP скрипт, я попытался это:
if(isset($_POST['service'))
{
$json = json_decode($_POST['service'], true);
foreach ($json["service"]["sizeTypes"] as $key => $value){
$insert = mysqli_query($dbc, "INSERT INTO table (COLUMN, COLUMN, COLUMN) VALUES (".$json["service"] . ", " . "$value["id"] . ", " . $value["value"]")");
}
}
else
{
echo "noooooob";
}
С этим обновлением я могу получить сообщение об успешном запуске, но это в значительной степени. Я не могу запустить запрос.
Любые мысли?
Вы могли бы хотеть войти 'msg' вместо' 'fail''. –
I.e .: 'console.log ('fail:', msg);' – MarcoS
И нет оснований использовать 'json_decode()' в вашем PHP, переменная '$ _POST' не будет содержать json. –