Javascript 从AJAX检索PHP数据
下面的代码触发错误回调函数。你能帮助我吗? 实际上,我正在尝试用php获取表单中的数据,然后用Ajax发送回这些数据,以便进一步处理 HTMLJavascript 从AJAX检索PHP数据,javascript,php,ajax,Javascript,Php,Ajax,下面的代码触发错误回调函数。你能帮助我吗? 实际上,我正在尝试用php获取表单中的数据,然后用Ajax发送回这些数据,以便进一步处理 HTML <body> <div> <form id="user"> NOM : <input type="text" name="name"/> </form> <button id="tst" onclick="SHOW();">CL
<body>
<div>
<form id="user">
NOM : <input type="text" name="name"/>
</form>
<button id="tst" onclick="SHOW();">CLICK</button>
</div>
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"]);
}
?>
错误为
不需要解码php文件中的数据。。。
dataType:“json”
表示ajax调用后响应的数据类型是json。$(“#user”).serialize()
将留给您一个字符串,例如name=
(name是表单input中的输入名称name=“name”
)。表单越大,数据字符串中存储的值就越多,例如name=marcus&phone=555-555-5555&location=interwebs
要直接访问PHP脚本中的内容,可以从$\u POST
数组中获取它们(因为您在$.ajax()
设置中指定了类型:'POST'
):
echo$_POST['name'];//马库斯
您不需要通过json\u decode()
运行它,因为您的数据不是以json
的形式输入的,也不能/不可以以您现在的方式访问$\u POST['data']
,因为$\u POST
数组中不存在该键
您的foreach()
循环是冗余的。有问题的数据(您希望返回的数据)已存储在$\u POST
数组中
由于您的程序非常基本,只需对$\u 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调用不工作!”之类的一般性错误是无用的。它们只是代码中的断点,但对于执行它们的原因没有提供有价值的反馈。
“下面的代码触发错误回调函数。”
-错误是?A.不需要json\u decode()
这个$\u POST
数据,B.$\u POST['data']
不是你想象的那样,C.在foreach()
循环中收集数组数据,json\u encode()
是POST循环。@David error是“ajax加载错误…”就像我的callback@JasonKrs-您正在将3个参数传递给error()
回调函数,该函数可以为您提供有关发生情况的更详细信息:xhr、textStatus、errorThrown
使用这些参数,而不是PHP中的一般性、非信息性错误消息,例如“ajax加载错误”,对于这样一个简单的示例,您需要做的就是:echo-json\u-encode($\u-POST)代码>并完成它。而且,由于您返回的数据应该是JSON
(它将是),因此您不能console.log(result)
并期望结果。您必须根据响应数据直接访问密钥,例如,console.log(result.name)
等。return[]
不起作用。您在$return[]
中缺少$
谢谢兄弟。救了我
...
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)
}