私が取り組んでいるサイトには、管理者が既存の順序付けられていないリストにリスト項目を追加できる管理者パネルがあります。これは、jQuery の.append()
. リスト項目は URL であり、PHP を使用してデータベースに挿入されます。この部分は機能します。
管理者がログインしているかどうかに関係なく、新しいリスト項目でページをリロードできる必要があります (更新されたリストをすべてのユーザーが利用できるようにしたいなど)。セッション、Cookie、または何らかのローカル ストレージ/永続ストレージ ユーティリティを使用しない限り、これを実行できないことはわかっています。
persistJS のようなものを使用することにした場合、後で再ロードできるように保存する必要があるのは何ですか? 全体<ul>
?ドキュメント全体?
PHP セッションを使用する場合、どうすればよいですか?
リストとフォームの例を次に示します。
<h3 class="category">
List 1
</h3>
<ul id="1">
<li>List item 1</li>
<li>List item 2</li>
</ul>
<br />
<h3 class="category">
List 2
</h3>
<ul id="2">
<li>List item 1</li>
<li>List item 2</li>
<li>List item 3</li>
<li>List item 4</li>
</ul>
<form id="addRec_form" action="classes/resources/addResource.php" method="post">
<p><select name="categoryList" id="categoryList">
<option value="0">Select a list to add to</option>
<option value="1">List 1</option>
<option value="2">List 2</option>
</select></p>
<p>Resource name: <input type="text" name="recName" id="recName" /></p>
<p>Resource URL: <input type="text" name="recURL" id="recURL" /></p>
<p><input type="submit" name="submitAddRec" value="Add resource" id="submitAddRec" /></p>
</form>
そしてAJAX:
$.ajax ({
type: 'post',
url: '/classes/resources/addResource.php',
data: {
recName: $('#recName').val(),
recURL: $('#recURL').val()
},
success: function(data) {
if (data === 'added') {
function updateLists() {
var h3ID = $('#categoryList option:selected').val();
var title = $('#recName').val();
var url = $('#recURL').val();
var newListItem = '<li><a href=\"' + url + '\">' + title + '</a></li>';
$('ul#' + h3ID).append(newListItem);
}
}
else
$('span#resError').fadeIn(400).text('There was an error adding this resource');
}
});
繰り返しますが、PHP は動作します。新しいリスト項目が適切なリストに追加されていることがわかるので、AJAX も機能します。ページを更新すると、明らかに新しいリスト項目がありません。
新しい DOM 状態を保存するために必要なことは何でも、AJAX 成功セクションで行う必要があることは理にかなっています。
どうやって始めたらいいのかわからない。誰かが私が達成しようとしていることのサンプルコードを提供してもらえますか? サーバー側かクライアント側かは関係ありません。
ありがとう!
編集: 最初の成功時に追加の AJAX 呼び出しを行うことは可能ですか? のように、最初の AJAX リクエストが成功すると、新しい AJAX 呼び出しが行われ、PHP を使用して新しいリスト項目が追加され、ページのリロード時に表示されますか?