【发布时间】:2018-12-10 19:14:19
【问题描述】:
我在跨度的 id 中捕获 JSON / Ajax 响应,好吧。但我无法将响应保存在 PHP 变量中。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script type="text/javascript">
$("#enviar").click(function(e) {
e.preventDefault();
var nombre = $("#nombre").val(),
apellido = $("#apellido").val(),
edad = $("#edad").val(),
datos = {"nombre":nombre, "apellido":apellido,"edad":edad};
$.ajax({
url: "procesa.php",
type: "POST",
dataType: 'json',
data: datos
}).done(function(respuesta){
if (respuesta.estado === "ok") {
$('#myName').text(respuesta.nombre);
$('#myApellido').text(respuesta.apellido);
$('#myEdad').text(respuesta.edad);
}
});
});
</script>
<form id="form">
<input type="text" id="nombre" placeholder="Nombre" accept="text/plain"><br><br>
<input type="text" id="apellido" placeholder="Apellido" accept="text/plain"><br><br>
<input type="number" id="edad" placeholder="Edad" accept="text/plain">
<input type="submit" id="enviar" value="Enviar">
</form>
答案在 span 的 id 中打印得很好,但是在我尝试的所有 POST 选项中,什么都没有打印。
<p>Name: <span id="myName"></span></p>
<p>Apellido: <span id="myApellido"></span></p>
<p>Edad: <span id="myEdad"></span></p>
<?php
echo $_POST["nombre"]; //Key json, nothing is printed.
echo $_POST["myName"]; //Name of var response, nothing is printed.
echo $_POST["respuesta.nombre"]; //Anothe json, nothing is printed.
$character = json_decode($respuesta);
echo $character->nombre; //nothing is printed. desperation
?>
procesa.php
header('Content-Type: application/json');
//Guardamos los datos en un array
$datos = array(
'estado' => 'ok',
'nombre' => $nombre,
'apellido' => $apellido,
'edad' => $edad
);
//Devolvemos el array pasado a JSON como objeto
echo json_encode($datos, JSON_FORCE_OBJECT);
有人可以帮我吗?
【问题讨论】:
-
var_dump()你的$_REQUEST看看你的数据在哪里 -
您将
datos对象发送到 PHP 服务器,因此只有这些密钥可用。$_POST["myName"]不存在,但$_POST["apellido"]应该存在。如果$_POST["apellido"]没有数据,那说明你的 JS 没有给它任何数据。 -
您将数据放在一个跨度中。当您提交表单时,跨度不会发送到 PHP,因为它们不是输入字段
-
需要注意的一点是 JSON_FORCE_OBJECT 直到 php 5.3 才可用;如果您运行的是旧版本,它将返回 null。也就是说,没有理由将它包含在您正在使用的对象中。由于您使用的是键/值数组,它将返回一个对象。
-
带有 spans 的 html/php... 那到底是什么?表单所在页面的那部分是吗?除非您发布到该页面,否则 php 将无法访问这些值。
标签: php jquery arrays json ajax