0
おはよう。
私は、お知らせが表示されるページを持っています。
毎分、アナウンスに変更があるかどうかチェックしたいと思います。
変更がある場合は、ページの内容を更新する必要があります。
したがって、古いアナウンスをチェックのためにコントローラに返送する必要があります。
しかし、私の問題は、データベースからコントローラ全体にオブジェクト全体を送る方法ではないということです。
(私はint型など、文字列のようなだけでプレーンな単一のデータ・タイプを送ることができます)、以下のphp(view)からajax経由でコントローラ(php)にオブジェクトを送信
は私のコード
の概要を事前にありがとうございます。
私のビュー(PHP)
<div class="row " id="tabapp_news">
<div class="container">
<div class='tickercontainer'>
<div class='mask'>
<ul id="telop">
<?php
foreach ($announces as $announce) {
echo '<li>' . $announce->comment . '</li>';
}
?>
</ul>
</div>
</div>
</div>
</div>
コントローラ
public function actionIndex()
{
$announces = [];
$desk_id = Yii::$app->request->get(DESK_KEYWORD);
if (!empty($desk_id)) {
$desk = Desk::find()
->where((['id' => $desk_id]))
->one();
if ($desk) {
$announces = Announce::getOpeningAnnouncesByDesk($desk->id);
}
}
return $this->render('announce', [
'announces' => $announces,
'desk' => $desk,
]);
}
public function actionCheckNewAnnounce()
{
$announces = Yii::$app->request->post('announces');;
$desk_id = Yii::$app->request->get(DESK_KEYWORD);
if (!empty($desk_id)) {
$desk = Desk::find()
->where((['id' => $desk_id]))
->one();
if ($desk) {
$new_announces = Announce::getOpeningAnnouncesByDesk($desk->id);
if (array_diff($new_announces, $announces)) {
return $this->render('announces', [
'announces' => $new_announces,
'desk' => $desk,
]);
}
}
}
return "";
}
私のJavaScript/AJAX
var interval = setInterval(function(){
$.ajax({
url: '/check-new-single',
dataType: 'html',
data: {announces: $("#info").data('announces')},
method: 'post',
success: function(response) {
if (response != "") {
$('#telop').empty();
$('#telop').append(response);
}
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
console.log("ajax communication failure.");
}
});
}, 60000);
をレンダリングするためにレンダリングし、uが唯一の新しいアナウンスを表示したり、古いものと新しいを追加したいですか? –
こんにちは、私はちょうど新しいものを表示する必要があります。 – chipnot
これは '$ new_announces = Announce :: getOpeningAnnouncesByDesk($ desk-> id);'新しいアナウンスを出しますか? –