получить ajax json POST в php и вернуть в успех


что я делаю неправильно?

<html>
<head>
    <script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
    <script>
    $(document).ready(function(){
        $('#btn1').click(function(){
            var tmp = {"Proc":3236470};
            $.ajax({
              type: 'POST',
              url: 'test.php',
              data: {'rel':tmp},
              success: function(data) {
                $('body').append(data);
                //alert(data);
              }
            });
        });
    });
    </script>
</head>
<body>
    <button id="btn1">
        teste
    </button>
</body>

Test.php -

<?php
header('Cache-Control: no-cache, must-revalidate'); 
header('Content-Type: application/json; charset=utf-8')

$aDados = json_decode($_POST['rel'], true);

echo $aDados["Proc"];
?> 

ОШИБКА: Parse error: syntax error, unexpected '$взначение данныхполе' (T_VARIABLE)

Author: Jhonatan, 2014-05-13

3 answers

, Чтобы получить данные из ajax, просто используйте метод(POST) и правильный ключ(rel), как указано в коде

data: {'rel': tmp},

Для преобразования json в массив в php используйте json_decode()

header('Content-Type: text/html; charset=utf-8');// para formatar corretamente os acentos

$arr = json_decode($_POST['rel'], true);

echo  '<pre>';
print_r($arr);

Выход:

Array
(
    [0] => Array
        (
            [Proc] => 3236470
            [Envio] => 08/05/2014
            [Usuário Digitalizador] => CSC TI
            [Tp Doc] => Serviços
            [Unidade] => CSC-TI
        )

)
 2
Author: rray, 2014-05-13 13:59:59

PHP (отчет.php) генерировать ответ типа JSON:

<?php
//Alteramos o cabeçalho para não gerar cache do resultado
header('Cache-Control: no-cache, must-revalidate'); 
//Alteramos o cabeçalho para que o retorno seja do tipo JSON
header('Content-Type: application/json; charset=utf-8')
//Convertemos o array em um objecto json
echo json_encode(array('erro' => '0','msg' => 'Executado com sucesso'));
?> 

Важно, что заголовок будет вызываться до любого вывода, в противном случае возвращается "warning", чтобы понять, попробовать поставить echo('test'); перед header.

В php (отчет.php), чтобы работать с массивом отправлен запрос AJAX, просто сделать следующим образом:

<?php
header('Cache-Control: no-cache, must-revalidate'); 
header('Content-Type: application/json; charset=utf-8')

$aDados = json_decode($_POST['rel'], true);
$nProc = $aDados["Proc"];

echo json_encode(array("erro" => "0", "proc" => $nProc));
?> 

Обратите внимание, что мы используем ассоциативный массив, то есть, на месте использование цифр в качестве показателя, используем имена, например, "ошибка" и "труды". Это имена, они будут доступны в функции, которая выполняется в параметр "success" из вашего вызова AJAX.

Для работы с json, который возвращается, измените функцию, которая выполняется в параметре "success":

$('#btn').click(function(){  
    var tmp = {"Proc":3236470,"Envio":"08/05/2014","Usuário Digitalizador":"CSC TI","Tp Doc":"Serviços","Unidade":"CSC-TI"};
    $.ajax({
      type: 'POST',
      url: 'relatorio.php',
      data: {rel:tmp},
      dataType: 'json',
      success: function(data) {
        //$('body').append(data);
        alert("O processo número "+data["proc"]+" foi enviado com sucesso");
     }
 });

});

 1
Author: Filipe Moraes, 2014-05-13 14:36:43

Товарища, пропускала свой код здесь и теги header действительно тебя не работает. Когда убрал, провел дать errinho как-то я, передавая json прямой и с помощью json_decode, про что функция json_decode ожидает string. Затем вы можете передать как строку и использовать json_decode в php или пройти как json, а не использовать json_decode в php.

Следующий код работает :

<html>
<head>
    <script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
    <script>
    $(document).ready(function()
    {
        $('#btn1').click(function()
        {
            var tmp = {"Proc":3236470};
            //var tmp = '{"Proc":3236470}'; // se usar json_decode, tem que passar como string

            $.ajax({
              type: 'POST',
              url: 'test.php',
              data: {
                  'rel':tmp,
              },
              success: function(data) {
                $('body').append(data);
                // alert(data);
              }
            });
        });

    });
    </script>
</head>
<body>
    <button id="btn1">
        teste
    </button>
</body>
<html>

Страницу test.php:

<?php

//$aDados = json_decode($_POST['rel'], true);

$aDados = $_POST['rel'];    //se for passar como json direto, não usar json_decode

var_dump($aDados);
 0
Author: Antonio Alexandre, 2016-12-08 17:53:05