#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);
}
});