Я продолжаю получать эту фатальную ошибку: не могу использовать объект типа stdClass в качестве массива - PullRequest
1 голос
/ 19 июня 2019

Я ударился головой о стену с помощью этой простой связи между javascript и php.

У меня есть HTML-форма, которая просит пользователя ввести два числа.Он должен отправить эти два числа в виде JSON на сервер (process.php).На сервере следует добавить два числа и отправить результат обратно в JavaScript.После этого он напечатает результат в HTML-файле.

javascript.js

$(document).ready(function(){
    $('#calcular').click (function(e){
        e.preventDefault();
        var numerosJSON = JSON.stringify($('#myForm').serializeArray());
        $.ajax({
            url: '/process.php',
            type:'post',
            data: numerosJSON,
            contentType: 'application/json; charset=utf-8',
            dataType: 'json',
            contentType: 'application/json',
            success: function(soma){
                                //shows result in a div in the html file
                $('#out').text(soma);
            }
        });
    });
})

process.php

$json = file_get_contents('php://input');
$numeros = json_decode($json, true);

$fst = $_POST['first'];
$snd = $_POST['second'];

$soma = $fst + $snd;

header('Content-Type: application/json, charset=utf-8');

echo json_encode($soma);

Это отправляет запрос, но я всегда получаю сообщение об ошибке:

Неустранимая ошибка: невозможно использовать объект типа stdClass в качестве массива

Можете ли вы, ребята?протянуть мне руку на это?Это сводит меня с ума!

1 Ответ

0 голосов
/ 19 июня 2019

В своем опубликованном PHP-коде вы декодируете полученный объект JSON, но не используете его, скорее вы пытаетесь получить значения из $_POST. После того, как вы декодируете объект, у вас будет один элемент массива, содержащий name и value дочерних элементов для каждого сериализованного ввода. Если вы хотите получить доступ к этим элементам по имени, вам нужно перебрать полученный и декодированный массив с помощью array_map() или while / for. Для простоты я использовал доступ по индексу массива в моем примере.

<?php
$json = file_get_contents('php://input');
$numeros = json_decode($json, TRUE);

$fst = $numeros[0]["value"];
$snd = $numeros[1]["value"];
$soma = $fst + $snd;

header('Content-Type: application/json, charset=utf-8');
echo json_encode($soma);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...