我有与JSON一起使用的功能。
function makeItem(data){
var tbl_body = "";
$.each(data, function() {
var id = parseInt(this.ProductId);
var tbl_row = "";
tbl_row += "<a href='article.php?cat=<?=$cat?>&subcat=<?=$subcat?>&id="+id+"'>";
tbl_row += "<div class='subCatImg'><img src='imagesDB/articles/<?=$main["+id+"]['dir']?>/<?=$main["+id+"]['image']?>'></div>";
tbl_row += "<div class='subCatName'>"+this.ProductNameBG+"</div>";
tbl_row += "<div class='subCatText'>"+this.ProductNameBG+"</div>";
tbl_row += "</a>";
tbl_body += "<div class='categoryWrap'>"+tbl_row+"</div>";
})
return tbl_body;
}
问题是变量id仅在第一次使用时 - 在标签中但在第二次或第三次不起作用。
是因为a标签没有立即关闭,或者因为第二次和第三次我试图在php数组中使用它。我确定该数组有效,因为如果我硬核(<?=$main[1]['dir]?>
)显示图像(不需要引号,我需要整数)。
问题是我必须让它变得动态,所以我不能只输入一些数字
为什么它第一次工作而不是其他工作?
答案 0 :(得分:0)
@epascarello是对的。 PHP是服务器端,JS是客户端。相反,尝试做类似
的事情<强>更新:强>
tbl_row += <?php print("\"<a href='article.php?cat=$cat&subcat=$subcat&id=\" + id + \"'>\""); ?>
tbl_row += <?php print("\"<div class='subCatImg'><img src='imagesDB/articles/$phpVal1/$phpVal2'></div>\""); ?>
tbl_row += <?php print("\"<div class='subCatName'>\" + this.ProductNameBG + \"</div>\"");?>
tbl_row += <?php print("\"<div class='subCatText'>\" + this.ProductNameBG + \"</div>\"");?>
tbl_row += <?php print("\"</a>\"");?>
在这里,你必须将id和dir的值从JS传递给php,这样php才能解析它的多维数组。您会注意到<?=$main["+id+"]['dir']?>/<?=$main["+id+"]['image']?>
已更改为$phpVal1/$phpVal2
。
您可以通过多种方式完成此操作 - 也许只需点击一下按钮即可。但是php将首先完成,然后是JS。
本质上,您从服务器(php)获取所有值,并强制它为您编写客户端(JS)。
答案 1 :(得分:0)
您可以将PHP数组转换为json对象,如下所示:
var main = <?php echo json_encode($main) ?>;
然后迭代它。