【发布时间】:2020-04-14 20:02:57
【问题描述】:
我正在开发一个 WordPress 插件,它通过 WordPress 短代码在前端显示“特殊按钮”。 我正在使用 Bootstrap 4,这些按钮使用 Bootstrap 弹出框,我需要在不刷新页面的情况下从数据库中检索/获取弹出框标题和内容,因此我需要使用 Ajax。 我读到不推荐使用异步 Ajax 调用(它会减慢页面速度),那么将 Ajax 与 Bootstrap 弹出框一起使用的最佳方法是什么?
编辑:在 Alex_89 回复之后,我写道:
$( document ).ready( function() {
// read EDIT 2 for working version...
} );
编辑 2: ...经过多次测试,现在似乎工作了!
$( document ).ready( function() {
let buttons_with_popover = $( 'button[data-gdpr-popover="true"]' );
buttons_with_popover.popover( {
container: 'div.my-container',
html: true,
placement: 'top',
title: '<div class="d-flex justify-content-between font-weight-bolder"><span class="header-text">Please wait...</span><span class="close-popover float-right ml-3"><i class="fas fa-times"></i></span></div>',
content: '<div class="d-flex justify-content-center"><div class="spinner-border text-success" role="status"><span class="sr-only">Loading...</span></div></div>',
trigger: 'click'
} );
buttons_with_popover.on( 'shown.bs.popover', function () {
$( '.close-popover' ).on( 'click', function () {
buttons_with_popover.popover( 'hide' );
} );
let this_button = $( this );
this_button.data( 'popover_id', this_button.attr( 'aria-describedby' ) );
let popover_id = this_button.data( 'popover_id' );
let popover_header_text = $( '#' + popover_id + ' h3.popover-header span.header-text' );
let popover_body = $( '#' + popover_id + ' div.popover-body' );
$.ajax( {
type: 'post',
url: ajax.url,
data: {
action: 'queries_database',
_nonce: ajax.nonce,
},
success: function ( queried_data ) {
let options = $.parseJSON( queried_data ).options;
popover_header_text.html( options.popover_title );
popover_body.html( '<div><p class="text-justify">' + options.popover_body + '</p></div>' );
this_button.popover( 'update' );
},
error: function () {
popover_body.html( '<p class="text-warning">Ops! Something is wrong... <i class="far fa-tired"></i></p>' );
}
} );
} );
buttons_with_popover.on( 'hidden.bs.popover', function () {
$( 'div.ccwhatsapp-container .popover' ).remove();
} );
} );
【问题讨论】:
-
不确定你在哪里读到了关于(异步)AJAX 调用的文章,但这是完全错误的。它既不被弃用,也不气馁。也许有人想建议不要使用同步 AJAX 调用来中断脚本并弄错了。
标签: jquery ajax wordpress twitter-bootstrap plugins