如何将 json 从 php 附加到列表视图?

Posted

技术标签:

【中文标题】如何将 json 从 php 附加到列表视图?【英文标题】:How to append json from php to a listview? 【发布时间】:2017-12-10 19:44:57 【问题描述】:

我从一个 php 页面加载了一个 json 函数并将它附加到一个 UL,它创建了一个列表。当我删除一行时,我重用相同的函数来重新附加列表;它可以工作,但有时我必须单击两次才能删除选定的行。

有没有办法简化这个过程,因为我是 jquery 的新手?

$(document).on('pageinit', '#two', function () 
    var url="http://localhost/budget/items_list.php";
    $.getJSON(url,function(result)
    console.log(result);
    $.each(result, function(i, field)
        var budgeted_id=field.budgeted_id;
        var name=field.name;
        var budget_amount=field.budget_amount;
        var trans_amount=field.trans_amount;
        var balance=field.balance;
        $("#listview").append('<li  data-icon="delete"><a href="#">'+name+'<span class="ui-li-count">Bal: $'+balance+'</span></a><a class="del" id="'+budgeted_id+'" href="#"></a></li>').listview("refresh");
    );
); 

$(document).on("click",'.del',function() 
    $("#listview").empty();      
    budgeted_id = (this.id);
    $.post('delete_item.php',postbudgeted_id:budgeted_id);
    var url="http://localhost/budget/items_list.php";
    $.getJSON(url,function(result)
        console.log(result);
        $.each(result, function(i, field)
           var budgeted_id=field.budgeted_id;
           var name=field.name;
           var budget_amount=field.budget_amount;
           var trans_amount=field.trans_amount;
           var balance=field.balance;
           $("#listview").append('<li data-icon="delete"><a href="#">'+name+'<span class="ui-li-count">Bal: $'+balance+'</span></a><a class="del" id="'+budgeted_id+'" href="#"></a></li>').listview("refresh");
        ) 
    ) 
);  

【问题讨论】:

【参考方案1】:

恕我直言,重复使用相同的功能并不是一个坏主意,您一定会始终获得服务器端的实际数据。

根据您对问题的描述,我相信您只需要链接两个 ajax 调用即可。

这里有一个如何做到这一点的例子,从jQuery documentation动态改编:

function createList(result)
  $.each(result, function(i, field)
    var budgeted_id=field.budgeted_id;
    var name=field.name;
    var budget_amount=field.budget_amount;
    var trans_amount=field.trans_amount;
    var balance=field.balance;
    $("#listview").empty().append('<li  data-icon="delete"><a href="#">'+name+'<span class="ui-li-count">Bal: $'+balance+'</span></a><a class="del" id="'+budgeted_id+'" href="#"></a></li>').listview("refresh");
  );


function getListData()
  $.ajax(
    url: "http://localhost/budget/items_list.php",
    method: "GET",
    dataType: "json",
    success: function (result) 
      createList(result);
    
  );


$(document).on("pageinit", "#two", function () 
  getListData();
); 

$(document).on("click", ".del",function()  
  var budgeted_id = (this.id);
  var request = $.ajax(
    url: "delete_item.php"
    method: "POST",
    data: postbudgeted_id:budgeted_id
  );
  var chained = request.then(function() 
    getListData();
  );
);

请注意,这是未经测试的,但您明白了。如果出现 ajax 错误,您的列表将保持不变,由您自行捕获这些错误并在您的网页中显示烤面包机通知。

如果链接 ajax 调用不起作用,也许你应该调查你的后端。

【讨论】:

以上是关于如何将 json 从 php 附加到列表视图?的主要内容,如果未能解决你的问题,请参考以下文章

如何将最新数据附加到android中的自定义基本适配器列表视图?

如何将下一级json数据附加到树视图结构中

如何将子级和大子级json数据附加到树视图结构中

如何将列表元素的 ID 值附加到带有 .json 的链接?

使用过渡将项目附加到列表视图

php 将JSON-LD结构化数据添加到列表视图