从AJAX中检索PHP数据

时间:2016-06-15 13:02:21

标签: javascript php ajax

以下代码触发错误回调函数。你能帮助我吗 ? 实际上,我正在尝试做的是在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"]);
}

?>

错误

enter image description here

3 个答案:

答案 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后的响应数据类型。