【问题标题】:PHP returns symbol 'a' before '{' JSON [closed]PHP在'{' JSON之前返回符号'a' [关闭]
【发布时间】:2020-05-01 20:43:12
【问题描述】:

我有这个 PHP 代码:

function _return($message, $status=200) {
    $return = json_encode([
        "message" => strval($message),
        "status" => intval($status)
    ], JSON_UNESCAPED_UNICODE);
    echo($return);
    exit();
}

在浏览器控制台中返回a{"message":"URL needed!","status":400}

我不明白符号'a'从何而来...

因此,AJAX 无法处理传入数据。 (调用错误)

$.ajax({
        url: '/',
        type: 'POST',
        data: data,
        processData: false,
        contentType: false,
        dataType: 'json',
        beforeSend: function() {
            button.attr('disabled', true);
        },
        success: function(result, status, xhr) {
            console.log(result());
            console.log(xhr.responseText);
            result = JSON.parse(result);
            if(result['status'] === 400) { 
                 errorNotification(result['message']);
            }
            successNotification("Successful!");
            button.attr('disabled', false);                
        },
        error: function(error) {
            errorNotification("Woops... Error!");
            console.log(error.responseText);
            button.attr('disabled', false);                
        }
    });

【问题讨论】:

  • a 必须在代码的前面部分回显,json_encode 没有这种行为

标签: php jquery json ajax syntax-error


【解决方案1】:

首先,您需要确定此字符是否源自 json_encode(它不是源自那里,但由于您不知道,因此您需要执行逻辑步骤以了解其工作原理如下):

function _return($message, $status=200) {
    $return = json_encode([
        "message" => strval($message),
        "status" => intval($status)
    ], JSON_UNESCAPED_UNICODE);
    echo("TEEEEEST".$return);
    exit();
}

如果响应是

TEEEEESTa{"message":"需要 URL!","status":400}

(不会是这种情况),那么在return的生成中就会出错。实际上,响应将是

aTEEEEEST{"message":"需要 URL!","status":400}

这意味着在项目的其他地方你有一个回声,或者你的 PHP 代码标签之间有一个 HTML,它由一个字母组成。为了找到发生这种情况的位置,您需要找出执行的 PHP 代码是什么并回显不同的文本。如果在 a 之前回显了一些文本,则表示问题稍后发生。如果在 a 之后回显了某些内容,则在问题发生后执行该代码行。

【讨论】:

    猜你喜欢
    • 2014-06-11
    • 2016-02-04
    • 2012-02-11
    • 2017-04-06
    • 2016-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多