私はこのスクリプトを持っており、各ユーザーは利用可能な各ウィジェット(id、style、position、...)をパーソナライズでき、それらの変更はHTML5ローカルストレージに保存されますが、これらの変数をMySQLdbに渡したいので人は別のブラウザからサイトにアクセスし、すべてを最初から再配置する必要はありませんが、ローカルストレージが空の場合、以前に設定された変数はMySQLデータベースから取得されます。
localstoragesaveのJSファイルからMySQLdbにこれらの3つの変数を渡す方法がわかりません。
AjaxからPHPクエリファイルを呼び出す必要があると思いますが、方法がわかりません。
//** SAVE SETTINGS FUNCTION **//
function saveSettingsWidget(){
if(localStorage && o_localStorage){
var storeSettings = [];
obj.find(o_widgetClass).each(function(){
var storeSettingsStr = {};
storeSettingsStr['id'] = $(this).attr('id');
storeSettingsStr['style'] = $(this).attr('data-attstyle');
storeSettingsStr['hidden'] = ($(this).is(':hidden') ? 1 : 0);
storeSettings.push(storeSettingsStr);
});
var storeSettingsObj = JSON.stringify( {'widget':storeSettings} );
/* Place it in the storage(only if needed) */
if(getKeySettings != storeSettingsObj){
localStorage.setItem(keySettings, storeSettingsObj);
}
}
}
アップデート:
OK、AjaxでPHPを(挿入クエリと更新クエリを使用して)呼び出すことができました。すべて正常に機能し、MySQLデータベースはすべての値を更新します。
ここで、ローカルストレージが空の場合にこれらの値を呼び出すことが意図されています。
ローカルストレージに保存されているのとまったく同じ方法で値を出力するPHPクエリを作成しました。
$query = "SELECT id , position , color , title , hidden , collapsed FROM mod_pos ORDER BY `position` ASC";
if($result = mysql_query($query))
{
// fetch data
while ($row = mysql_fetch_assoc($result))
{
$row_set[] = $row;
}
// set the output
$jsonsettings = json_encode($row_set);
}
$json='{"widget":' .$jsonsettings. '}' ;
echo $json;
したがって、出力は
{"widget":[{"id":"widget1-42","position":"0","color":"default","title":"Title1","hidden":"0","collapsed":"0"},{"id":"widget5-42","position":"1","color":"default","title":"Title5","hidden":"1","collapsed":"0"}]}
NOW-ローカルストレージが空の場合、これらの保存された値を次のように解析したいと思います。
var url = "url-to-php-file-with-json-output.php"
$.getJSON(url,function(json){ });
しかし、私はどこでそれをしますか...
JSファイルには、キーが設定されているセクションがあります。
if(localStorage && o_localStorage) // this is if localStorage is enabled and there are values in browser's local storage
{
var keySettings = 'widgets_settings_'+location.pathname+'_'+objId;
var getKeySettings = localStorage.getItem(keySettings);
}
私は置くべきですか
else { $.getJSON ...}
ここで、次のことを見て、キーを別の方法で定義する必要があります。
var keySettings = 'widgets_settings_'+location.pathname+'_'+objId;
これはローカルストレージの識別子です。実際の出力に優先します。これは、新しいデータソースとは無関係であり、現在はmysql出力になっています。
または、そのセクションをスキップして、ここで指定する必要があります。
if(localStorage && o_localStorage && getKeySettings){
var jsonSettings = JSON.parse(getKeySettings);
そしてどうやって...
これは一部の人にとっては完全にばかげたQであるに違いないことを私は知っていますが、可能であれば、もう少し詳細なヘルプをいただければ幸いです。
ありがとう百万