簡體   English   中英

無法使用Ajax從另一個域獲取JSON

[英]Can't get JSON from another domain using Ajax

我正在嘗試使用JSONP從另一個使用Spring的域中獲取我的JSON。 所以,我寫了JsonpControllerAdvice

@ControllerAdvice
public class JsonpControllerAdvice extends AbstractJsonpResponseBodyAdvice {

    public JsonpControllerAdvice() {
        super("callback");
    }
}

而我的控制器:

@RequestMapping("games")
@RestController
public class GameController extends BaseGameController {

    private static final Logger LOGGER = Logger.getLogger(GameController.class);

    private static final String KAFKA_TOPIC = "virto_games";

    private static final String ROOT_URL = ServerConfig.GAMES_HOST + "/games";

    @GetMapping(produces = MediaType.APPLICATION_JSON_VALUE)
    public ResponseEntity<String> games(
            @RequestParam(defaultValue = "0") int page
    ) {
        String url = ROOT_URL + "?page=" + page;
        return request.get(url);
    }
}

在瀏覽器中,它返回下一個JSON:

{
    "items":[{
        "id":"1b4a3104-925b-46ac-a2da-2187bbf46e0a",
        "name":"Minecraft",
        "description":"Game",
        "user_id":"ee430ea5-0977-4fc2-b1c4-cc33ddd9db56"
    }],
    "number":0,
    "count":1
}

在我的js代碼下面是我嘗試獲取JSON的位置:

var virtoHost = "http://localhost:8080/";

function getGames() {
    $.ajax({
        url: virtoHost + 'games',
        dataType: 'JSONP',
        jsonpCallback: 'callback',
        type: 'GET',
        success: function (data) {
            alert(JSON.stringify(data));
        }
    });
}

但是它崩潰並帶有異常:

SyntaxError: unexpected token: ':'
[Learn More]
games:1:8

怎么了? 我檢查了它是正確的JSON,並且:是標准的分隔符。

我遇到了錯誤...我不知道AbstractJsonpControllerAdvice為JSON-P支持設置了Jackson。 就我而言,我正在從游戲服務器中獲取一個就緒的JSON對象,而Jackson則未執行任何操作...
因此,我需要在游戲服務器上啟用JSON-P支持,並從聚合服務器向游戲服務器重新發送callback

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM