我不断收到此致命错误:无法使用 stdClass 类型的对象作为数组

我一直在用 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);

            }

        });

    });

})

进程.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 类型的对象作为数组


你们能帮我解决这个问题吗?这让我疯狂!


慕田峪9158850
浏览 144回答 1
1回答

慕桂英546537

在您发布的 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);
打开App,查看更多内容
随时随地看视频慕课网APP