У меня есть php файл, в котором пользователь заполнит форму, и данные формы будут отправлены в фоновый файл php в формате JSON, но я не могу получить данные JSON, отправляемые в файл php
//ОТПРАВКА ДАННЫХ...
$(document).ready(function () {
$('#submit').click(function () {
var name, id, sec, base;
name = $('#name').val();
id = $('#id').val();
sec = $('#pay').val();
base = [{name: name, reg: id, sec: sec}];
$.ajax({
url: '/post/json.php',
type: 'POST',
data: JSON.stringify(base),
contentType: 'application/json; charset=utf-8',
dataType: 'json',
async: false,
success: function (json) {
//do something ... after the data successfully processed via json.php
}
}
});
});
});
Я попытался написать php как простой файл, чтобы получить строку запроса и повторить ее, но ничего не происходит... но если я POST простая строка запроса (через jQuery), то ее эхо
//PHP BACKEND
<?php
$ar= $_SERVER['QUERY_STRING'];
echo $ar;
?>
Можешь попробовать
$(document).ready(function () {
$('#submit').click(function () {
....
base = {name: name, reg: id, sec: sec};
$.ajax({
...
data: base,
dataType: 'json',
...
});
});
});
И ваш php BACKEND
$post = json_decode($_POST);
Вы используете POST в качестве типа запроса, поэтому все представленные данные ('name', 'red', 'sec')
доступны в предварительно определенном массиве $_POST
.
Кроме того, ваш JavaScript может быть упрощен:
var name = $('#name').val();
var id = $('#id').val();
var sec = $('#pay').val();
$.post( "/post/json.php", {name: name, reg: id, sec: sec}, function( data ) {
...
});
Вам нужно получить данные POST, это не будет добавляться как строка запроса, попробуйте использовать $ _POST или отправить его переменной по почте.
Попробуй использовать:
data: { base : JSON.stringify(base)},
// or data:'base =' + JSON.stringify(base),
Затем загрузите его в файл php
$data = json_decode($_POST['base']);
Подробнее: Как отправить строку json в файл php с помощью jquery submit?
Пожалуйста, прочитайте эту страницу: Получите объект JSON из URL-адреса
$json = file_get_contents('url_here');
$obj = json_decode($json); echo
$obj->access_token;
также $_SERVER['QUERY_STRING'];
не будет работать, потому что вы отправляете данные через POST.
вместо этого используйте $_POST['base']
.
$_POST['base']
, а не имя
Вы не использовали ключ почтовых данных, данные JSON будут размещены в одном ключе,
+ Изменить
data: JSON.stringify(base)
в
data: "json="+JSON.stringify(base)
И получить данные на сервере
print_r(json_decode($_POST['json']));
Вы используете запрос http POST для отправки данных на сервере, который доступен через $_POST
суперглобальный массив.
$_SERVER['QUERY_STRING']
будет полезен, если вы используете HTTP-запрос GET.
просто используйте $_POST['name']
, $_POST['reg']
и т.д. для доступа к представленным данным.
data: "jsondata="+JSON.stringify(base);
кода jquery data: "jsondata="+JSON.stringify(base);
и получить доступ к нему на стороне сервера, используя $jsonArray = json_decode($_POST['jsondata']);
Затем вы можете получить доступ к необходимым данным, используя $jsonArray['name']