使脚本响应来自PHP的回显

时间:2018-09-24 08:40:05

标签: php jquery ajax

我希望我的AJAX脚本响应来自PHP的echo,但是它不起作用。这是register.php:

<?php
  if (isset($_POST['username']))
  {
    require_once('dbconfig.php');
    $user = $_POST['username'];
    $pass = $_POST['password'];

    if (strlen($user) > 1) 
    {
      echo '{"status":success}';
    } 
    else if (strlen($user) < 1) 
    {
      echo '{"status":failed}';    
    }
  } else
    echo "Sesiunea nu mai este activa.";
?>
$(document).ready(function() {
  $('#btnRegister').click(function() {
    var user = $('#username').val();
    var pass = $('#password').val();
    var posting = $.post("http://localhost/univoo/ucp/universitati/dbfunc/register.php", {
      username: user, 
      password: pass
    });

    posting.done(function(data) {
      if (data.status == "success") {
        alert("Succes");
      } else if (data.status == "failed") {
        alert("failed");
      };
    });
  });
});

3 个答案:

答案 0 :(得分:2)

尝试一下:

<?php
    if (isset($_POST['username'])) {

        require_once('dbconfig.php');
        $user = $_POST['username'];
        $pass = $_POST['password'];

        if (strlen($user) > 1) {
            $result = true;
        } else if (strlen($user) < 1) {
            $result = false;
        } else {
            $result = 'Sesiunea nu mai este activa.';
        }
        echo json_encode(compact('result'));
    }
?>

还有您的JavaScript:

posting.done(function(data) {

    var response = JSON.parse(data);

    if (response.result === true) {
        alert('success');
    } else if (response.result === false) {
        alert('failed');
    } else {
        alert(response.result);
    }
});

答案 1 :(得分:0)

问题可能出在响应的编码上。尝试

echo json_encode('{"status":"success"}');

编辑:哈哈,是的,我的回答是错误的。 JSON编码过多。如果您已经得到了响应{“ status”:“ success”}

,也许上面问题中的评论所指出的是缺少JSON.parse

答案 2 :(得分:0)

您的JSON响应无效。您需要将“成功”或“失败”用双引号引起来,例如:

echo '{"status":"success"}';

也就是说,最好不要手动构建字符串,而是使用json_encode从PHP逻辑序列化数组。

还请注意,您的jQuery代码将需要进行修改以手动反序列化此文本响应,因为它不会自动识别为JSON:

posting.done(function(data) {
  data = JSON.parse(data); // add this line
  if (data.status == "success") {
    alert("Succes");
  } else if (data.status == "failed") {
    alert("failed");
  };
});