- Аргумент обратного вызова уже является объектом javascript, вам не нужно его анализировать.
- jQuery.html () выводит только строку html непосредственно в содержимое выбранного элемента. Если вы хотите отобразить URL как видимое изображение, вы можете показать его, используя свойство css background-image
чтобы сделать это, на вас обратный вызов успеха
function (jsonData) {
// obtain all the property as they are image url
var urlPorperty = Object.keys(jsonData.data);
// random pick an index
var index = Math.floor(Math.random() * urlPorperty.length);
// get the url base on the index
var imageUrl = urlPorperty[index];
// assign the image to #imagetestresult background image
$('#imagetestresult').css('background-image', `url(${imageUrl})`);
}
Обновление 1
Вы можете упростить URL JSON в том же массиве уровней
{
"url": [
"http:\/\/image1.jpg",
"http:\/\/image2.jpg",
"http:\/\/image3.jpg",
"http:\/\/image4.jpg"
]
}
, как указывает Шива Пандей, запуск аякса по событию мыши может быть нецелесообразным. Поскольку ajax является асинхронным, для http требуется время, и взаимодействие с пользователем может быть не очень гладким. Так или иначе.
$('.imagehover').on('mouseenter', function() {
$.getJSON('images.json', function(result) {
// random pick an index
var index = Math.floor(result.url.length * Math.random());
// replace the content with a <img>
$("#imagetestresult").html($('<img>', {
src : result.url[index]
}));
});
});