-1

我发现很多与这个主题有关的问题,但投票很少,但到目前为止,我似乎无法得到任何工作的答案。我已将 Web 服务器上的 PHP 页面制作为 application/json,它将 mysqli 查询转换为数组并使用 json_encode 对其进行编码,以便它现在是 JSON 对象。我现在正在尝试使用 javascript 解码 JSON 对象,但我能找到的唯一解决方案是处理数组而不是对象。最终,我想解码 JSON 并遍历它,以便我可以将数据插入到客户端上的 Sqlite 数据库中。除了能够对 JSon 进行字符串化以便我可以看到它已被检索到之外,我很难让客户端上的任何结果正常工作。我的代码如下:

Web 服务器检索JSON.php 页面

<?php header('Content-Type: application/json'); 

$mysqli= new mysqli("host","user","password","database");

mysqli_select_db($mysqli,"database");

$query = "SELECT * FROM AppCustomers";
$result = mysqli_query($mysqli,$query) or die('Errant query:  '.$query);

$customers = array();
if(mysqli_num_rows($result)) {
  while($customer = mysqli_fetch_assoc($result)) {
  $customers[] = array('customer'=>$customer);
  }
}

$json_array = array('customers'=>$customers,);

echo json_encode($json_array); 

mysqli_close($mysqli);
?>

客户端Javascript

<script>
  $.ajax({
  url      : 'http://webserver/retrieveJSON.php',
  dataType : 'json',
  type     : 'get',
  success  : function(Result){
           //ResultAlert = JSON.stringify(Result);
           //alert(ResultAlert);
             }
  });
</script>

当我对结果进行字符串化时,我得到以下 JSON 对象的长版本:

{"customers":[{"customer":{"id":"1","customerName":"Customer Alpha","customerID":" custA","customerAddress":" Alpha Way","customerCity":" Alpha","customerState":" AL","customerZip":"91605"}},{"customer":{"id":"2","customerName":"Customer Beta","customerID":" CustB","customerAddress":" Beta Street","customerCity":" Beta","customerState":" BE","customerZip":"91605"}}]}

我有一个数据库,并且已经设置了以下插入功能。

function insertCustomer(customerName, customerID, customerAddress, customerCity, customerState, customerZip) {
db.transaction(function (tx) {
    tx.executeSql('INSERT INTO Customers (customerName, customerID, customerAddress, customerCity, customerState, customerZip) VALUES (?, ?, ?, ?, ?, ?)', [customerName, customerID, customerAddress, customerCity, customerState, customerZip],CountReturns);
});

};

如何将对象转回数组,以便可以遍历它并将每个字段插入到我的 Sqlite 数据库中?换句话说,我用什么替换 //stringify 部分?我希望这个问题不是太本地化,但我试图列出整个过程,以防其他人试图做同样的事情。在此过程中的任何其他提示或建议也受到欢迎。谢谢。

感谢 Quentin,我能够使用以下代码代替 stringify 访问数组并将字段输入数据库;但是,由于某种原因,所有输入都未定义。

    for (var i = 0, len = Result.customers.length; i < len; ++i) {
    var customer = Result.customers[i];
    insertCustomer(customer.customerName, customer.customerID, customer.customerAddress, customer.customerCity, customer.customerState, customer.customerZip);
    }
4

1 回答 1

2
  1. 不要把它串起来
  2. JSON 中最外层的数据类型是对象(或者,用 PHP 术语来说,是关联数组)。它有一个customers包含数组的属性。你可以得到它Result.customers
于 2013-05-03T16:33:39.293 回答