PHP 在 '{' JSON [closed] 之前返回符号 'a'

PHP returns symbol 'a' before '{' JSON [closed]

提问人:Yaroslav Borodii 提问时间:5/2/2020 最后编辑:Lajos ArpadYaroslav Borodii 更新时间:5/2/2020 访问量:58

问:


编辑问题以包括所需的行为、特定问题或错误以及重现问题所需的最短代码。这将帮助其他人回答这个问题。

3年前关闭。

我有这个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);                
        }
    });
php jquery json ajax 语法错误

评论

4赞 Joffrey Schmitz 5/2/2020
必须在代码的前一部分中回显,则没有此行为ajson_encode

答:

0赞 Lajos Arpad 5/2/2020 #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}

(事实并非如此),那么这将是生成返回的错误。实际上,响应将是

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

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