使用 Phonegap、Json 和 jQuery mobile,如何制作链接到单个文章的标题列表

发布于 2025-01-02 08:27:09 字数 2198 浏览 0 评论 0原文

我使用 Json 从 Wordpress 中构建的网站获取数据(使用 Json API 插件)。我使用 jQuery mobile 在 Phonegap 中进行应用程序的布局。让数据显示在 Phonegap 中并不是最难找到的事情(代码如下)。但是,是否可以列出不同帖子的标题并将它们链接到特定文章并将内容加载到页面中?在 PHP 中你可以只使用一个参数,但是有没有办法让这样的东西在 jQuery mobile 中工作?

这是我使用的代码。如果有人碰巧使用谷歌发现这篇文章也很方便。

    <script>          
        $(document).ready(function(){
            var url="http://127.0.0.1:8888/wp/api/get_recent_posts";
            $.getJSON(url,function(json){
                $.each(json.posts,function(i,post){
                    $("#content").append(
                    '<div class="post">'+
                    '<h1>'+post.title+'</h1>'+
                    '<p>'+post.content+'</p>'+
                    '</div>'
                    );
                });
            });
        });
    </script> 

编辑:

我想再次感谢 Shanabus 帮助我解决这个问题。这是我让它工作的代码 和:

    $(document).ready(function() {

        var url="http://127.0.0.1:8888/wpjson/api/get_recent_posts";
        var buttonHtmlString = "", pageHtmlString = "";

        var jsonResults;

        $.getJSON(url,function(data){
            jsonResults = data.posts;
            displayResults();       
        });

        function displayResults() {

            for (i = 0; i < jsonResults.length; i++) {
                buttonHtmlString += '<a href="#' + $.trim(jsonResults[i].title).toLowerCase().replace(/ /g,'') + '" data-role="button">' + jsonResults[i].title + '</a>';
                pageHtmlString += '<div data-role="page" id="' + $.trim(jsonResults[i].title).toLowerCase().replace(/ /g,'') + '">';
                pageHtmlString += '<div data-role="header"><h1>' + jsonResults[i].title + '</h1></div>';
                pageHtmlString += '<div data-role="content"><p>' + jsonResults[i].content + '</p></div>';
                pageHtmlString += '</div>';
            }

            $("#buttonGroup").append(buttonHtmlString);
            $("#buttonGroup a").button();
            $("#buttonGroup").controlgroup();
            $("#main").after(pageHtmlString);
        }

    });

I used Json to get data off a site build in Wordpress (using the Json API plugin). I'm using jQuery mobile for the layout of the application in Phonegap. Getting the data to display in Phonegap wasn't the hardest thing to find (code below). But, is it possible to make a list of the titles of different posts and linking them to the specific article and loading the content in a page? In PHP you could just use an argument but is there a way to make something like this work in jQuery mobile?

Here's code I used. Also handy if someones happens to come across this post using google.

    <script>          
        $(document).ready(function(){
            var url="http://127.0.0.1:8888/wp/api/get_recent_posts";
            $.getJSON(url,function(json){
                $.each(json.posts,function(i,post){
                    $("#content").append(
                    '<div class="post">'+
                    '<h1>'+post.title+'</h1>'+
                    '<p>'+post.content+'</p>'+
                    '</div>'
                    );
                });
            });
        });
    </script> 

EDIT:

I'd like to thank shanabus again for helping me with this. This was the code I got it to work
with:

    $(document).ready(function() {

        var url="http://127.0.0.1:8888/wpjson/api/get_recent_posts";
        var buttonHtmlString = "", pageHtmlString = "";

        var jsonResults;

        $.getJSON(url,function(data){
            jsonResults = data.posts;
            displayResults();       
        });

        function displayResults() {

            for (i = 0; i < jsonResults.length; i++) {
                buttonHtmlString += '<a href="#' + $.trim(jsonResults[i].title).toLowerCase().replace(/ /g,'') + '" data-role="button">' + jsonResults[i].title + '</a>';
                pageHtmlString += '<div data-role="page" id="' + $.trim(jsonResults[i].title).toLowerCase().replace(/ /g,'') + '">';
                pageHtmlString += '<div data-role="header"><h1>' + jsonResults[i].title + '</h1></div>';
                pageHtmlString += '<div data-role="content"><p>' + jsonResults[i].content + '</p></div>';
                pageHtmlString += '</div>';
            }

            $("#buttonGroup").append(buttonHtmlString);
            $("#buttonGroup a").button();
            $("#buttonGroup").controlgroup();
            $("#main").after(pageHtmlString);
        }

    });

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

行雁书 2025-01-09 08:27:09

是的,这是可能的。看看这个例子:http://jsfiddle.net/shanabus/nuWay/1/

在那里您将看到我们获取一个对象数组,循环遍历它并附加新按钮(和 jqm 样式)。这符合您想要做的吗?

我还建议通过删除 $.each 并将其替换为基本的 for 循环来改进您的 JavaScript:

for(i = 0; i < json.posts.length; i++)

众所周知,这种循环结构的性能更好。与 append 方法相同。我一次又一次地听说,构建一个字符串变量并追加一次比调用多次追加更有效。

更新

为了回应您的评论,我发布了一个新的解决方案,该解决方案模拟加载内容对象的 Json 集合,以动态地将 page 元素添加到您的应用程序中。它还动态生成链接到它们的按钮。

如果您在 $(document).ready() 以及可能的其他一些 jQM 事件中执行此操作,则此方法有效,但您可能必须检查 文档 或调用其中一个 刷新内容方法以使页数有效。

http://jsfiddle.net/nuWay/4/

希望这有帮助!

Yes, this is possible. Check out this example: http://jsfiddle.net/shanabus/nuWay/1/

There you will see that we take an object array, cycle through it and append new buttons (and jqm styling). Does this do what you are looking to do?

I would also recommend improving your javascript by removing the $.each and substituting it for the basic for loop:

for(i = 0; i < json.posts.length; i++)

This loop structure is known to perform better. Same with the append method. I've heard time and time again that its more efficient to build up a string variable and append it once rather than call append multiple times.

UPDATE

In response to your comment, I have posted a new solution that simulates loading a Json collection of content objects to dynamically add page elements to your application. It also dynamically generates the buttons to link to them.

This works if you do it in $(document).ready() and probably a few other jQM events, but you may have to check the documentation on that or call one of the refresh content methods to make the pages valid.

http://jsfiddle.net/nuWay/4/

Hope this helps!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文