1

私はこのスクリプトを持っており、各ユーザーは利用可能な各ウィジェット(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であるに違いないことを私は知っていますが、可能であれば、もう少し詳細なヘルプをいただければ幸いです。

ありがとう百万

4

1 に答える 1

-1

はい、AJAXです。フレームワーク(jquery)を使用している場合は、Web上に多数のチュートリアルがあります。たぶんここから始めましょう。

于 2012-10-04T21:40:18.303 に答える