我有一个有效的 JSON,但我不断收到“语法错误 json.parse 第 1 行意外的数据结尾”


i have a valid json but i keep getting "syntaxerror json.parse unexpected end of data at line 1"!

我在这里迷路了,我正在开发一个游戏,需要调用服务器来启动游戏并注册用户并获取一些游戏数据。 但是在调用启动游戏时没有任何反应,我不断收到此错误消息。 我已经验证了从服务器获得的 JSON 响应。 以下是我的代码,请帮助:(

杰伦

{
    "message": "Game started",
    "code": 200,
    "status": "success",
    "user_session_id": "217c7a4759388ae0af80bdf7668e4bf5",
    "points": 0,
    "dataBN4": {
        "1": {
            "number_id": 181,
            "guess_number": 183
        },
        "2": {
            "number_id": 182,
            "guess_number": 968
        },
        "3": {
            "number_id": 183,
            "guess_number": 742
        },
        "4": {
            "number_id": 184,
            "guess_number": 986
        },
        "5": {
            "number_id": 185,
            "guess_number": 230
        },
        "6": {
            "number_id": 186,
            "guess_number": 580
        },
        "7": {
            "number_id": 187,
            "guess_number": 648
        },
        "8": {
            "number_id": 188,
            "guess_number": 691
        },
        "9": {
            "number_id": 189,
            "guess_number": 424
        },
        "10": {
            "number_id": 190,
            "guess_number": 85
        }
    }
}

Jquery:

function startNewGame() {
    $('#game').html(activeHtml);
    n_url = gameBaseUrl + 'action=start_game';
    $.ajax({
        dataType: "JSON",
        url: n_url,
        success: function(data){
            userSessionId = data.user_session_id;
            answersObject = data.dataBN4;
        }
    }).done(function(){
        resortAnswers();
        createAnswers();
    });
    /*
    $.getJSON(url, {}, function (data) {
        userSessionId = data.user_session_id;
        answersObject = data.dataBN4;
    }).done(function () {
        resortAnswers();
        createAnswers();
    });
    */
}

PHP 生成 json;

<?php
ob_start();
        //make db entries and loges to data array
        $data['message'] = 'game started';
        $data['status'] = 'success';
        $data['code'] = 200;
        $data['points'] = 0;
        $data['dataBN4'] = [
        ['number_id' => 11, 'guess_number' => 33],
        //and so for until i added 9 more similar arrays here
        ];
    header('Content-Type: application/json');
    echo (json_encode($data));
$out = ob_get_clean();
echo $out;

更新:

我安装了Fire错误,现在它显示此错误:"跨源请求被阻止:同源策略不允许在 http://ourserverblabla/index.php?action=start_game 读取远程资源。(原因:缺少 CORS 标头"访问控制-允许源")"

终于成功了。

我在脚本顶部添加了这一行,它奏效了。

header('Access-Control-Allow-Origin: *');

这似乎是jQuery和某些浏览器的问题。 主要是浏览器,因为它们会阻止一些通信,原因我什至不知道。