Как обработать данные JSON, отправленные в файл PHP через Ajax

0

У меня есть 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;
?>
  • 0
    У вас есть две встроенные функции json_decode и json_encode для работы с json в php. Разве этого недостаточно?
  • 2
    Данные POST отправляются как тело HTTP, а не как строка запроса .. используйте $ _POST в PHP
Показать ещё 1 комментарий
Теги:

6 ответов

0

Можешь попробовать

$(document).ready(function () {
    $('#submit').click(function () {
    ....
    base = {name: name, reg: id, sec: sec};
        $.ajax({
            ...
            data: base,
            dataType: 'json',
            ...
        });
    });
});

И ваш php BACKEND

$post = json_decode($_POST);
0

Вы используете 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 ) {
    ...
});
  • 0
    $ данных = $ _ POST [ 'имя']; это также не может отобразить данные echo $ data
0

Вам нужно получить данные POST, это не будет добавляться как строка запроса, попробуйте использовать $ _POST или отправить его переменной по почте.

Попробуй использовать:

data: { base : JSON.stringify(base)},
// or data:'base =' + JSON.stringify(base),

Затем загрузите его в файл php

$data = json_decode($_POST['base']);

Подробнее: Как отправить строку json в файл php с помощью jquery submit?

0

Пожалуйста, прочитайте эту страницу: Получите объект JSON из URL-адреса

$json = file_get_contents('url_here'); 
$obj = json_decode($json); echo
$obj->access_token;

также $_SERVER['QUERY_STRING']; не будет работать, потому что вы отправляете данные через POST.

вместо этого используйте $_POST['base'].

  • 0
    я сначала использовал $ _POST ['name']; и т.д., чтобы повторить данные, но это не сработало
  • 0
    Используйте $_POST['base'] , а не имя
0

Вы не использовали ключ почтовых данных, данные JSON будут размещены в одном ключе,

+ Изменить

  data: JSON.stringify(base)

в

data: "json="+JSON.stringify(base)

И получить данные на сервере

print_r(json_decode($_POST['json']));
  • 0
    я попробовал это, но это не сработало
  • 0
    @SoumeshBanerjee вы проверили в консоли Ajax запрос Firebug ..?
Показать ещё 1 комментарий
0

Вы используете запрос http POST для отправки данных на сервере, который доступен через
$_POST суперглобальный массив.

$_SERVER['QUERY_STRING'] будет полезен, если вы используете HTTP-запрос GET.

просто используйте $_POST['name'], $_POST['reg'] и т.д. для доступа к представленным данным.

  • 0
    во-первых, я использовал так ... но $ _POST [имя]; и т. д. также не работает для меня, поэтому я использую $ _SERVER ['QUERY_STRING'], но пока ничего не достигнуто
  • 0
    Пожалуйста, измените это в своих data: "jsondata="+JSON.stringify(base); кода jquery data: "jsondata="+JSON.stringify(base); и получить доступ к нему на стороне сервера, используя $jsonArray = json_decode($_POST['jsondata']); Затем вы можете получить доступ к необходимым данным, используя $jsonArray['name']

Ещё вопросы

Сообщество Overcoder
Наверх
Меню