为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
慕田峪9158850 2021-08-28 15:49:13
我一直在用 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 类型的对象作为数组你们能帮我解决这个问题吗?这让我疯狂!
查看完整描述

1 回答

?
慕桂英546537

TA贡献1848条经验 获得超10个赞

在您发布的 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);


查看完整回答
反对 回复 2021-08-28
  • 1 回答
  • 0 关注
  • 143 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信