以下代码触发错误回调函数。你能帮助我吗 ? 实际上,我正在尝试做的是在php中获取表单中的数据,然后将这些数据发送回Ajax进行进一步处理
HTML
<body>
<div>
<form id="user">
NOM : <input type="text" name="name"/>
</form>
<button id="tst" onclick="SHOW();">CLICK</button>
</div>
Javascript
function AFFICHER(){
$.ajax({
type: 'POST',
url: 'http://localhost:8012/myscript.php',
data: $('#user').serialize(),
dataType: "json",
crossDomain: true,
success: function(result) {
console.log(result);
},
error: function(xhr, textStatus, errorThrown) {
console.log('ajax loading error...');
return false;
}
});
}
我的PHP
<?php
$decoded = json_decode($_POST['data'],true);
foreach ($decoded as $value) {
echo json_encode($value["name"]);
}
?>
错误
答案 0 :(得分:2)
$('#user').serialize()
将为您留下一个字符串,例如name=<input-value>
( name 是表单输入name="name"
中的输入名称)。表单越大,将存储在数据字符串中的值越多,例如。 name=marcus&phone=555-555-5555&location=interwebs
要直接访问PHP脚本中的那些,您可以从$_POST
数组中获取它们(因为您在type: 'POST'
设置中指定了$.ajax()
):
echo $_POST['name']; // marcus
您需要不通过json_decode()
运行它,因为您的数据不是JSON
,也不能以您的方式访问$_POST['data']
是因为$_POST
数组中不存在该密钥。
您的foreach()
循环是多余的。有问题的数据(您要返回的数据)已存储在$_POST
数组中。
由于您的程序非常基础,只需编码$_POST
数组并将其发回。这就是PHP脚本中所需的全部内容:
echo json_encode($_POST);
然后,由于响应将为JSON
,您可以通过$.ajax().success()
回调函数中的键/属性访问值:
...
success: function(result) {
console.log(result.name) // will log the value stored in 'name'
},
error: function(xhr, textStatus, errorThrown) {
console.log('Status: ' + textStatus, 'Error: ' + errorThrown)
}
我还添加了额外的错误处理功能,这样您就可以看到发生了什么事情。学会接受错误以更好地理解您的计划。一般错误,例如“无效!”,“数据库连接失败!”,和/或“ ajax调用不成功!”没有用,原因很明显。它们只是代码中的断点,但没有提供关于它们被执行的原因的有价值的反馈。
答案 1 :(得分:0)
<?php
$decoded = json_decode($_POST['data'],true);
foreach ($decoded as $value) {
return[]=$value["name"];
}
echo json_encode($return);
?>
答案 2 :(得分:0)
无需解码php文件中的数据...
dataType: "json"
表示ajax调用为JSON后的响应数据类型。