【发布时间】:2014-06-03 23:54:57
【问题描述】:
我已经搜索过,但找不到答案。对不起,如果我错过了。
我有一个带有模板列表的下拉框的页面。用户选择模板后,可用于编辑的各种选项显示在下面的 div 中。
当编辑选项出现时,它会强制页面滚动并且它现在滚动的区域没有页面的背景颜色。 (我会发截图,但系统不让我。)相反,它只是新滚动区域中的纯灰色。
这是我用于更新 div 的 .js:
var $j = jQuery.noConflict();
$j(document).ready(function() {
$j("#ecbs_styles").change(function() {
var str = "";
$j("#ecbs_styles option:selected").each(function() {
str = $j("#ecbs_styles").val();
try {
$j.post( ajaxurl, {
data: { template : str },
action: 'ecbs_populate_admin_template'
}, function ( response ) {
//alert(response);
$j("#ecbs-edit-area").html( response );
}
);
}
catch (err) {
alert(err);
}
});
})
.change();
});
其他一切正常。这只是背景的这个烦人的问题。我一直在寻找诸如“ajax 更新背景”和“ajax 重绘背景”之类的东西,但一直没有找到。
到目前为止,我已经尝试过:
$j('body').css('background-color', rgb(248, 248, 255));
还有这个:
document.bgColor='#FFFFFF';
在响应函数中。没有运气。
我已经能够通过设置页面的高度来修复它,以便在选择任何内容之前它高于编辑框。这是一个好的修复,但我仍然想知道我是否可以在不刷新页面的情况下动态更新页面背景。
好的,这里是 php.ini。这些函数只是返回一些格式化的 html:
function ecbs_populate_admin_template() {
if ( isset( $_POST['data'] ) && $_POST['data']['template'] != '' ) {
$ecbs_template_id = $_POST['data']['template'];
$ecbs_templates = get_option( ECBS_TEMPLATES );
$ecbs_template = $ecbs_templates[$ecbs_template_id];
die( ecbs_format_template_edit_pane( $ecbs_template_id, $ecbs_template ) );
} else {
die( 'No data to display' );
}
}
表单更新和显示正确,当我提交 POST 数据时正确。
【问题讨论】:
-
你在你的 PHP 页面上
echo json_encode($dataAssocArray);了吗?此外,您的响应必须是一个字符串才能像这样进入 HTML。您希望$j.post()的最后一个参数设置dataType。 -
不。我格式化了 html,然后做了
die( $html );。我尝试将其更改为echo jason_encode( $html ),但仍然无法正确更新背景。 -
什么是
ajaxurl?它需要有效才能获得响应。另外,'rgb(248,248,255)'应该是一个字符串,它是document.body.bgColor = '#fff';。 -
ajaxurl由 wordpress 定义:codex.wordpress.org/AJAX_in_Plugins -
将
'rgb(248,248,255)'更改为字符串会导致背景区域在除强制滚动的区域之外的所有地方更新,该区域保持纯灰色。数字。我可能会坚持设置页面高度,因为它现在给了我一个可行的解决方案。