为什么jQuery不会打印整个解析过的PHP数组?

时间:2013-06-13 13:51:48

标签: php html jquery

我正在尝试将我的产品表存储在一个数组中,并使用JSON将其传递给jQuery,然后使用jQuery和HTML将其显示给用户。

用于填充数组的php代码

 $sql= "SELECT * FROM XXXXXXXXX";
 $result = mysqli_query($link, $sql);

 while($item = mysqli_fetch_array($result)){
  $array[] = $item;
 }

  echo json_encode($array);

用于读取数组的jQuery代码

jQuery.parseJSON(msg);
var output = jQuery.parseJSON(msg);

for(var index=0;index<output.length; index++){

  var itmnam = output[index][1];
  var itmpic = output[index][2];
  var itmpr = output[index][3];
  var itmdisc = output[index][4];
  var itmdesc = output[index][5];
  var itmshp = output[index][6];
  var itmav = output[index][7]; 

  var htmlstring ="-"+itmnam+"-"+itmpic+"-";
  $('#shpop').html(htmlstring);
  }
  $("#shpcart").fadeIn();
  });

问题是浏览器只打印数组的最后一行

这是什么问题?我怎样才能显示所有行?

2 个答案:

答案 0 :(得分:2)

你在循环中设置html:

$('#shpop').html(htmlstring);

因此,html仅使用最后一行的值

设置

但你要追加它(我猜):

var htmlstring = "";

for(var index=0;index<output.length; index++){

  var itmnam = output[index][1];
  ...
  var itmav = output[index][7]; 

  htmlstring +="-"+itmnam+"-"+itmpic+"-";

}
$('#shpop').html(htmlstring);
$("#shpcart").fadeIn();

答案 1 :(得分:0)

您可以尝试以下方法:

// Parse out your data
var output = jQuery.parseJSON(msg);

// Save a reference to your cart
var $shop = $('#shpop');

// Iterate your data and pull out the values you need.
$.each(output, function (idx, elem) {
    var htmlstring ="-"+itmnam+"-"+itmpic+"-";
    $shop.append("-" + elem[1] + "-" + elem[2] + "-");
});

// Fade In animation
$("#shpcart").fadeIn();

这有点精简。希望这会有所帮助。