Проблемы с запросом jQuery $.ajax к random.org api

#javascript #jquery #json #ajax

#javascript #jquery #json #ajax

Вопрос:

У меня возникли проблемы с api, и я много чего перепробовал, но, похоже, ничего не работает. Я использовал их https://api.random.org/json-rpc/1/request-builder Создатель объекта JSON, чтобы убедиться, что я правильно выполняю JSON. Я просмотрел свой запрос JSON и думаю, что проблема именно в этом.

Вот мой код:

 $.ajax({
            url: 'https://api.random.org/json-rpc/1/invoke',
            type:"POST",
            data:{
                'jsonrpc': '2.0',
                'method': 'generateIntegers',
                'params': {
                    'apiKey': '00000000-0000-0000-0000-000000000000',
                    'n': 10,
                    'min': 1,
                    'max': 10,
                    'replacement': true,
                    'base': 10
                },
                'id': 2601
            },
            contentType:"application/json; charset=utf-8",
            dataType:"json",
            success: function(result){
                $('#text').html(JSON.stringify(result));
                console.log(result);
                }
            }); 
  

Например, ключ равен 0.

Ответ, который я получаю, таков:

 {"jsonrpc":"2.0","error":{"code":-32700,"message":"Parse error","data":null},"id":null}
  

И в таблице кодов ошибок веб-сайтов указано, что сообщение вызвано ошибкой синтаксического анализа, и данные, которые я получил, обязательно будут правильными, так что просто оставим это.. Я отправляю это неправильно? Я должен отправлять эти данные .. не так, как он хочет, чтобы я тоже, и я считаю, что это как-то связано с заголовками моих запросов JSON.

Я знаю, что мог бы просто использовать Maths.random() или, возможно, скопировать всю их демонстрационную страницу, но они используют кучу HTML-форм, и это должен быть простой Ajax .. Верно?

Ответ №1:

Вам необходимо самостоятельно упорядочить данные, если вы хотите отправить их в формате json

$.ajax по умолчанию используется для формирования объектов encode

Попробуйте

 var data: {
  'jsonrpc': '2.0',
  'method': 'generateIntegers',
  'params': {
    'apiKey': '00000000-0000-0000-0000-000000000000',
    'n': 10,
    'min': 1,
    'max': 10,
    'replacement': true,
    'base': 10
  },
  'id': 2601
};

$.ajax({
  url: 'https://api.random.org/json-rpc/1/invoke',
  type: "POST",
  data: JSON.stringify(data),// stringify data object
  contentType: "application/json; charset=utf-8",
  dataType: "json",
  success: function(result) {
    $('#text').html(JSON.stringify(result));
    console.log(result);
  }
});
  

Ответ №2:

Я добавил галочки (`) для упорядочивания объекта и двойные кавычки («») там, где были одиночные. Добавление моего решения для других random.org пользователи:

 $.ajax({
    url: "https://api.random.org/json-rpc/1/invoke",
    type:"POST",
    data:`{
        "jsonrpc": "2.0",
        "method": "generateIntegers",
        "params": {
            "apiKey": "00000000-0000-0000-0000-000000000000",
            "n": 10,
            "min": 1,
            "max": 10,
            "replacement": true,
            "base": 10
        },
        "id": 2601
    }`,
    contentType:"application/json; charset=utf-8",
    dataType:"json",
    success: function(result){
        $("#text").html(JSON.stringify(result));
        console.log(result);
    }
});