通过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类型的对象用作数组
你们能帮我这个忙吗?这让我发疯了!
答案 0 :(得分:0)
在发布的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);