在PHP循环中动态创建jQuery列表视图

Dynamically creating jQuery listview in PHP loop

本文关键字:jQuery 列表 视图 创建 动态 PHP 循环      更新时间:2023-09-26

我想在PHP循环中填充一个jQuery列表视图,我试图通过回显用PHP变量填充列表的javascript代码来实现这一点。这就是我正在使用的:

我的HTML

<div data-role='page' id='feedPage'>
     <div data-role='content'>
        <ul id='pics' data-role='listview'>
        <li>test</li>
        </ul>
     </div>
</div>

和我的PHP/JavaScript

echo "<script type='javascript'>
var pics = '$('#pics')
var pitem = '$('<li/>').html($myArray[element])
var plink = '$('<a/>')
pitem.append(plink)
pics.append(pitem)
pics.listview('refresh')
</script>";

但名单上一片空白。这段代码在PHP for循环中运行,我可以访问和操作$myArray的所有元素,但我似乎无法填充列表。我甚至试着用一个简单的.html('hello')运行这个代码,但没有成功。除了我在HTML中硬编码的test项之外,我得到的只是一个空白列表。有没有像这样用PHP生成列表的方法?如果有,我该如何正确地生成列表?

谢谢!

解决方案:

我只是通过执行<script type='text/javascript'>.html('$myArray[element]')(注意单引号)来实现这一点。这是因为javascript在PHP echo中运行。哦,我的一美元都不用逃了。最终代码:

echo "<script type='text/javascript'>
var pics = $('#pics')
var pitem = $('<li/>').html('$myArray[element]')
var plink = $('<a/>')
pitem.append(plink)
pics.append(pitem)
pics.listview('refresh')
</script>";

我认为主要问题在type='javascript'中,应该是type='text/javascript'

需要考虑的另一件事是,$myArray[element]的内容需要打印为javascript字符串。运行$myArray = array_map('json_encode', $myArray);就可以了。

您忘记将JS代码放入document.ready事件回调

$(document).ready(function($){
  var pics = $('#pics')
  var pitem = $('<li/>').html($myArray[element])
  var plink = $('<a/>')
  pitem.append(plink)
  pics.append(pitem)
  pics.listview('refresh')
});