我目前正在尝试使用Ajax将页面的特定部分加载到div中:
$(document).on("click", "#claim_forum_groups", function (e) {
e.preventDefault();
$.ajax({
url: "/user/{{ $user->id }}/groups",
type: "POST",
cache: false,
data: {
subtype: 'claim_groups',
type: 'forum_account'
},
headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') }
})
.done(function (data) {
if(data == "success")
{
$("#forum_info_container").load(location.href + " #forum_info_container");
$("#forum_data_container").load(location.href + " #forum_data_container");
alert("good");
}
})
.fail(function (data) {
console.log(data);
alert("bad");
});
});
当前发生的事情是,很奇怪。有时,它会正确加载两个div。当我重新尝试对所有内容进行“压力测试”时,它只会加载“ forum_info_container”,并且当我检查“网络”选项卡时,它显示了视图中使用的未定义stdClass索引“ id”的错误。
即使在测试时,也定义了ID ,因为刷新页面时一切看起来都很好。它有时似乎起作用,有时却没有。我的猜测是.load()的工作时间过早或类似。我尝试使用setTimeOut,但无法解决这种情况。
这是我的forum_data_container div供参考:
<div class="card-body mb-3" style="padding-top:0px" id="forum_data_container">
@if(!is_null($info))
<div class="post-meta mb-2">
Posts - {{ $info->id }}
</div>
<div class="post-meta mb-2">
Stats - {{ $info->id }}
</div>
@else
No info available.
@endif
</div>
答案 0 :(得分:1)
尝试一下:
final SwipeRefreshLayout swipeRefreshLayout = findViewById(R.id.swipe);
swipeRefreshLayout.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
swipeRefreshLayout.getViewTreeObserver().removeOnGlobalLayoutListener(this);
} else {
swipeRefreshLayout.getViewTreeObserver().removeGlobalOnLayoutListener(this);
}
Rect rect = new Rect();
swipeRefreshLayout.getDrawingRect(rect);
swipeRefreshLayout.setProgressViewOffset(false, 0, rect.centerY() - (swipeRefreshLayout.getProgressCircleDiameter() / 2));
}
});