我的 JSON 数据使用 AJAX 加载了两次,它只应该在单击时加载一次
My JSON data is loading in twice using AJAX, it is only supposed to load once on click
我正在使用AJAX和Jquery将json对象加载到我的网页中。它工作得很好,但是在 50-70% 的时间内,它将 json 数据加载到我的页面两次,它将第二组数据附加到我的页面,有没有一种好方法可以确保我的数据只加载一次?
我最初的想法是使 JSON 调用同步而不是异步,但这听起来不对,有没有更好的方法
? $('#myResource').click(function() {
$.getJSON("data/preachers.json", function(result) {
$.each(result, function(i, field) {
$("#preachers").append( function() {
var preacher = '<div class="box box1">';
preacher += '<div class="image">';
preacher += '<a href=' + '"' + (field.link) + '"' + ' target="_blank">';
preacher += '<img src= "img/resources/' + (field.image) + '" alt="' + (field.name) + '" class="resource_image">';
preacher += '</a>';
preacher += '</div>'; //class = image
preacher += '<div class="text">';
preacher += '<p><h2>' + (field.name) + '</h2>';
preacher += (field.details) + '</p>';
preacher += '</div>'; //class=text
preacher += '</div>'; //class=box
return preacher;
});
});
});
});
尝试
$('#myResource').unbind('click').click(function(){
})...
单击后尝试禁用按钮
$('#myResource').click(function() {
$('#myResource').prop('disabled' , true); //<<<<<<<<<<<<<<<< here
$.getJSON("data/preachers.json", function(result) {
$.each(result, function(i, field) {
$("#preachers").append( function() {
var preacher = '<div class="box box1">';
preacher += '<div class="image">';
preacher += '<a href=' + '"' + (field.link) + '"' + ' target="_blank">';
preacher += '<img src= "img/resources/' + (field.image) + '" alt="' + (field.name) + '" class="resource_image">';
preacher += '</a>';
preacher += '</div>'; //class = image
preacher += '<div class="text">';
preacher += '<p><h2>' + (field.name) + '</h2>';
preacher += (field.details) + '</p>';
preacher += '</div>'; //class=text
preacher += '</div>'; //class=box
return preacher;
});
$('#myResource').prop('disabled' , false); //<<<<<<<<<<<<<<<<<<<<<<< here
});
});
});
在一些
注释的帮助下,答案最终是我需要在函数开头取消绑定单击,并将其解绑:
$('#myResource').click(function() {
$( "#myResource").unbind( "click" );
$.getJSON("data/preachers.json", function(result) {
$.each(result, function(i, field) {
console.log('load everything');
$("#preachers").append( function() {
var preacher = '<div class="box box1">';
preacher += '<div class="image">';
preacher += '<a href=' + '"' + (field.link) + '"' + ' target="_blank">';
preacher += '<img src= "img/resources/' + (field.image) + '" alt="' + (field.name) + '" class="resource_image">';
preacher += '</a>';
preacher += '</div>'; //class = image
preacher += '<div class="text">';
preacher += '<p><h2>' + (field.name) + '</h2>';
preacher += (field.details) + '</p>';
preacher += '</div>'; //class=text
preacher += '</div>'; //class=box
return preacher;
});
});
});
});
相关文章:
- 单击F5时如何停止页面加载
- 通过单击动态加载的表中同一行的另一个字段来更新一行的字段
- 单击按钮时加载数据
- 单击按钮更改加载到表中的JSON文件
- 单击时选择2(未选中),显示加载微调器javascript
- 如何防止刷新页面时加载点击事件
- 加载/卸载单击Javascript
- 在页面加载/单击事件后,从 JS 文件 1 中的函数调用 JS 文件 2 中定义的函数失败
- 加载单击链接
- 标记群集器加在单击时删除群集
- 如何加载双击而不是点击放大弹出
- Select2使用远程数据加载单选元素中的默认值
- JS在加载时点击Jquery函数
- 加载点击在safari中不工作
- 在页面加载时点击页面上的元素
- 如何检测是否select2已加载时点击输入字段在jquery
- 如何防止单击导航栏项后重新加载单页应用程序
- React-native android WebView handle在加载前点击Url
- 每次加载单页应用程序都在检索cookie
- 加载点击 jquery data json