0

TL;DR は投稿の下部にあります

モバイル OS 用のアプリケーションを作成しています。これは関連するコードです:

var pageId;
        $(document).ready(function(){
            var output = $('#output');

            $.ajax({
                url: 'http://dev.123456789.co.uk/db.php',
                dataType: 'jsonp',
                jsonp: 'jsoncallback',
                timeout: 5000,
                success: function(data, status){
                    $.each(data, function(i,item){ 
                        var linkedPage = '<h2><a href="displaySinglePost.html">'+item.eventName+'</a></h2>'
                            + '<p>Description: '+item.description+'</p><p>Type: '
                            + item.type+'</p><p id="pageid">'+item.id+'</p>';

                        output.append(linkedPage);
                        pageId = $('#pageid').html();
                        localStorage.setItem("pageId", pageId);
                    });
                },
                error: function(){
                    output.text('There was an error loading the data.');
                }
            });
        });

基本的に、コードは開発サーバーに保存されている PHP ファイルに移動し、データベースからデータを返します。この場合、そのイベント名、説明、タイプ、および ID であり、ID はデータベース内の行の ID (主キー) です。

各反復で、「+item.id+」に正しい item.id を出力します。

'。

ただし、各リンクをクリックして新しいページに移動すると、 localStorage.setItem -> pageId は常に同じであるため、データベースの最初の ID である 1 に常に等しくなります。ただし、リンクをクリックすると、反復ごとに正しい ID に移動できるようにする必要があります。

私が知る限り、アプリケーションはスマートフォン用であるため PHP を読み取ることができないため、get/post を実行できません。そのため、デバイスでのデータ処理は、JSON から送信された javascript/data (および HTML による構造) を介して行われます。何か案は?

編集:displaySinglePost.html:

var pageId;

        $(document).ready(function(){
            pageId = localStorage.getItem("pageId");
            document.write("pageid: " +pageId);
            var output = $('#output');
            localStorage.clear();
            $.ajax({
                url: 'http://dev.xxxxxxx.co.uk/single.php',
                dataType: 'jsonp',
                jsonp: 'jsoncallback',
                timeout: 5000,
                success: function(data, status){
                    $.each(data, function(i,item){ 
                        var dataOut = '<h2><a href="displaySinglePost.html">'+item.eventName+'</a></h2>'
                            + '<p>Description: '+item.description+'</p><p>Type: '
                        + item.type+'</p>';

                        output.append(dataOut);
                    });
                },
                error: function(){
                    output.text('There was an error loading the data.');
                }
            });
        });

怠け者です。読んでいない:

ただし、各リンクをクリックして新しいページに移動すると、 localStorage.setItem -> pageId は常に同じであるため、データベースの最初の ID である 1 に常に等しくなります。ただし、リンクをクリックすると、反復ごとに正しい ID に移動できるようにする必要があります。

私が知る限り、アプリケーションはスマートフォン用であるため PHP を読み取ることができないため、get/post を実行できません。そのため、デバイスでのデータ処理は、JSON から送信された javascript/data (および HTML による構造) を介して行われます。何か案は?

4

1 に答える 1

1

最初の例のように、反復ごとにローカル ストレージ アイテム「pageID」を設定するつもりですか? 反復ごとにその値を上書きしている可能性があります (最後の反復では item.id が 1 になります)。

ただし、各 ID のリンクを作成する場合は、次のことを試してください。

var dataOut = '<h2><a href="page.php?id='+item.id+'">'+item.eventName+'</a></h2>'
                    + '<p>Description: '+item.description+'</p><p>Type: '
                    + item.type+'</p>';

そして、page.php の $_GET 経由で php に id を処理させます。

于 2012-10-07T22:25:25.410 に答える