【问题标题】:PHP API + jQuery AJAX call JSON Syntax ErrorPHP API + jQuery AJAX 调用 JSON 语法错误
【发布时间】:2018-06-20 06:35:54
【问题描述】:

我正在尝试制作一个使用 API 将信息存储在我的数据库中的表单。

但是文件 app.php 它没有返回任何东西。我可以在其中处理 API 与 DB 的通信。

我在前端表单的开发者扩展中收到此错误:

SyntaxError: JSON.parse: JSON 数据的第 1 行第 1 列的数据意外结束

只是为了测试,我尝试在 app.php 中执行 var_dump($response); die; 并正确显示文本。

我的app.php

<?php

namespace App;

require 'autoload.php';

if($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_REQUEST['action'])) {
    switch ($_REQUEST['action']) {
        case 'set':
            $data = new Data;
            $data->name  = $_REQUEST['name'];
            $data->email = $_REQUEST['email'];
            $data->phone = $_REQUEST['phone'];

            header('Content-Type: application/json');
            $response['id'] = $data->save();

            return json_encode($response);
            break;

        default:
            header("HTTP/1.0 404 Not Found");
            break;
    }
} else {
    header("HTTP/1.0 404 Not Found");
}

我的 app.js 文件:

    var data = {
        name: name,
        email: email,
        phone: phone,
        action: 'set'
    };

    var sentData = sendData(data);

    if(sentData) {
        alert("OK");
        resetFields();
    } else {
        alert("NOT OK");
    }

function sendData(data) {
    $.ajax({
        url: 'app/app.php',
        method: 'POST',
        data: data,
        dataType: 'json',
        success: function(response) {
            return response;
        },
        error: function(xhr, status, error) {
            return xhr.responseText
        }
    })
}

那么,错误在哪里?

【问题讨论】:

  • 你有一个语法错误,它不会返回 json。
  • 那么...它在哪里?
  • 从上面可以看到header('Content-Type: application/json);
  • 你也应该使用exit(json_encode($response));而不是return json_encode($response);
  • 您看到的第一个错误不是那个,但是 exit() 有帮助。您可以将其发布为答案。

标签: javascript php jquery ajax oop


【解决方案1】:

不要使用return,你应该回显你的json,如果脚本执行结束你可以使用exit

<?php

namespace App;

require 'autoload.php';

if($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_REQUEST['action'])) {
    switch ($_REQUEST['action']) {
        case 'set':
            $data = new Data;
            $data->name  = $_REQUEST['name'];
            $data->email = $_REQUEST['email'];
            $data->phone = $_REQUEST['phone'];

            header('Content-Type: application/json');
            $response['id'] = $data->save();

            exit(json_encode($response));
            break;

        default:
            header("HTTP/1.0 404 Not Found");
            break;
    }
} else {
    header("HTTP/1.0 404 Not Found");
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-28
    • 1970-01-01
    • 2015-10-09
    • 2012-01-11
    • 1970-01-01
    • 2012-10-13
    • 2013-01-24
    • 2017-07-31
    相关资源
    最近更新 更多