gpt4 book ai didi

php - jQuery AJAX 请求在页面加载时不起作用,但是它在调试控制台中起作用

转载 作者:行者123 更新时间:2023-11-30 05:54:44 25 4
gpt4 key购买 nike

在 jQuery 中关闭异步请求解决了这个问题。

我的页面中有以下 Javascript 和 AJAX 请求(使用 jQuery):

    "use strict";

var hsArea, counter, hotspots, count;
counter = 4;
count = 0;
hotspots = {};

function fetchHotspotList() {
$.getJSON ('/alpha/engine/hotspots/gethotspot.php', {'type' : 'list'}, function(json) {
hotspots = json;
});
}

function displayHotspot(type, id, number) {
$.ajax({
url: '/alpha/engine/hotspots/gethotspot.php',
dataType: 'json',
data: {'type' : type, 'id' : id},
success: function(json) {
console.log(json);
var hotspot, extract;
extract = json.content;
extract = extract.replace(/<(?:.|\n)*?>/gm, '');
extract = extract.substring(0, 97);
extract = extract + "...";
json.content = extract;

hotspot = document.createElement("div");
hsArea.append(hotspot);
hotspot.setAttribute('class','hotspot');
hotspot.setAttribute('id','hotspot' + number);

$(hotspot).css('position', 'absolute');
$(hotspot).css('top', number * 100 + 100);
$(hotspot).css('left', number * 100 + 110);

hotspot.innerHTML = "<h1>"+ json.title + "</h1><p>" + json.content + "</p>";
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert(textStatus, errorThrown);
}
});
}

function listHotspots() {
for(count = 0; count < counter; count++) {
(function(count) {
displayHotspot('scribble',hotspots[count], count);
count = count + 1;
})(count);
}
}

function loadHotspots() {
fetchHotspotList();
listHotspots();
}

$(document).ready(function() {
hsArea = $("#hotspotArea");
fetchHotspotList();
listHotspots();
});

(抱歉,格式有点不对!)- 现在,$(document).ready() 函数按应有的方式分配 hsArea 变量,然而,fetchHotspotList() 和 listHotspots() 的组合返回:

未捕获的 TypeError:无法调用 null 的方法“replace”

但是,如果在 Google Chrome Javascript 控制台中,我运行:

loadHotspots();

它从 AJAX 请求中获取数据并将其正确显示在页面上。起初我认为问题是我没有使用 $(document).ready() 处理程序,但添加它并没有解决它。两者都没有在 body 标记内使用 onload 处理程序。

如有任何帮助,我们将不胜感激。

问候,本。

最佳答案

这可能是因为您的 listHotSpots 函数在 fetchHotSpots 返回之前被调用(因为它是异步调用)。

最好将 listHotSpots 的执行链接到 fetchHotSpots 的执行,如下所示:

function fetchHotspotList() {
$.getJSON ('/alpha/engine/hotspots/gethotspot.php', {'type' : 'list'}, function(json) {
hotspots = json;
listHotSpots();
});
}

您最好修改 listHotSpots 以获取从 AJAX 调用返回的 json 数据。希望这对您有所帮助!

关于php - jQuery AJAX 请求在页面加载时不起作用,但是它在调试控制台中起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12651981/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com