JSON,jQuery,PHP逻辑问题循环并在每次迭代时显示正确的值

时间:2012-10-07 22:05:08

标签: php javascript jquery json

TL;帖子底部的DR

我正在为移动操作系统构建应用程序。这是相关的代码:

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.');
                }
            });
        });

基本上,代码转到存储在我们的dev服务器上的PHP文件,并从数据库返回数据,在这种情况下,它的eventName,description,type和id,id是数据库中行的id(主键) )。

在每次迭代中,它会输出正确的item.id:'+ item.id +'

'。

但是,当您单击每个链接以转到新页面localStorage.setItem - &gt; pageId始终相同,因此它始终等于1,即数据库中的第一个id。但是我需要它,以便当您单击链接时,它会将您带到每次迭代的正确ID。

据我所知,我无法进行获取/发布,因为应用程序无法读取PHP,因为它适用于智能手机,因此设备上的数据处理是通过JSON发送的javascript /数据(以及带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 - &gt; pageId始终相同,因此它始终等于1,即数据库中的第一个id。但是我需要它,以便当您单击链接时,它会将您带到每次迭代的正确ID。

据我所知,我无法进行获取/发布,因为应用程序无法读取PHP,因为它适用于智能手机,因此设备上的数据处理是通过JSON发送的javascript /数据(和结构)用HTML);任何想法?

1 个答案:

答案 0 :(得分: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>';

让php通过page.php

上的$ _GET处理id