Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从AJAX检索PHP数据_Javascript_Php_Ajax - Fatal编程技术网

Javascript 从AJAX检索PHP数据

Javascript 从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

下面的代码触发错误回调函数。你能帮助我吗? 实际上,我正在尝试用php获取表单中的数据,然后用Ajax发送回这些数据,以便进一步处理

HTML

<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)
}