javascript - 如何使用 json 从 php 将响应返回到 javascript?

标签 javascript php jquery ajax json

此问题已解决

下面的代码是正确且有效的代码

我创建了一个 html 表单,它将某些变量发送到 php 文件,并通过 json 将成功返回给 javascript。但问题是我无法得到 javascript 文件的任何响应。我不知道是什么原因。有人可以帮我解决这个问题吗?谢谢

我的表格是

<!doctype html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js">       </script>
<script src="scriptj.js"></script>
</head>
<body>
<form action="http://localhost/donotdel/process.php" method="POST">
    <div id="name-group" class="form-group">
        <label for="name">Name</label>
        <input type="text" class="form-control" name="name" placeholder="name">
    </div>
    <div id="email-group" class="form-group">
        <label for="email">Email</label>
        <input type="text" class="form-control" name="email" placeholder="email">
    </div>
    <button type="submit" class="btn btn-success">Submit <span class="fa fa-arrow-right"></span></button>
  </form>
</body>
</html>

我的 JavaScript 文件是

$(document).ready(function () {
    $('form').submit(function (event) {
        $('.form-group').removeClass('has-error');
        $('.help-block').remove();
        var formData = {
            'name': $('input[name=name]').val(),
            'email': $('input[name=email]').val(),
        };
        $.ajax({
            type: 'POST',
            url: 'http://localhost/donotdel/process.php',
            data: formData,
            dataType: 'json',
            encode: true
        }).done(function (data) {
            console.log(data);
            if (!data.success) {
                if (data.errors.name) {
                    $('#name-group').addClass('has-error');
                    $('#name-group').append('<div class="help-block">' + data.errors.name + '</div>');
                }

                if (data.errors.email) {
                    $('#email-group').addClass('has-error');
                    $('#email-group').append('<div class="help-block">' + data.errors.email + '</div>');
                }
            }
            else {
                $('form').append('<div class="alert alert-success">' + data.message + '</div>');
            }
        }).fail(function (data) {
            console.log(data);
        });
        event.preventDefault();
    });
});

我的 php 文件是

<?php

$errors         = array();      
$data           = array(); 

if (empty($_POST['name']))
    $errors['name'] = 'Name is required.';

if (empty($_POST['email']))
    $errors['email'] = 'Email is required.';

if ( ! empty($errors)) {
    $data['success'] = false;
    $data['errors']  = $errors;
} else {
    $data['success'] = true;
    $data['message'] = 'Success!';
}
header ('Content-Type: application/json');
header("Access-Control-Allow-Origin: *");
echo json_encode($data);
?>

我收到的错误不是将 json 传递给 javascript 文件,而是将 json 打印在屏幕上。但是我需要 javascript 来显示警报。

最佳答案

尝试在 php 中设置正确的 header :

header ('Content-Type: application/json');

如果失败 - 你能发布一个 plunker 或 jsfiddle 吗?

关于javascript - 如何使用 json 从 php 将响应返回到 javascript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30617643/

相关文章:

php - 如何使用正则表达式排除两个大括号之间的文本?

javascript - 在没有提交按钮的情况下选中时如何获取复选框名称

javascript - ELSE IF 语句不验证信息

javascript - Rails 在 cygwin 中创建类似路径的窗口

javascript - 如何在php的onclick函数中传递带有空格的变量作为参数

jQuery-最低浏览器内存要求

jquery - 深度 ul - li 列表使用 jQuery 从当前树向所有父 li 添加类

javascript - JS CANVAS - 到达目标位置时圆圈速度减慢

php - 删除最后 2 个斜杠之间的文本 (PHP)

javascript - jquery选择表中的所有单元格,除了