繁体   English   中英

使用Java脚本解码PHP编码的JSON对象

[英]Using Javascript to Decode a PHP Encoded JSON Object

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

Web服务器retrieveJSON.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);
});

};

如何将对象转换回Array,以便可以对其进行迭代并将每个字段插入到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);
    }
  1. 不要把它串起来
  2. JSON中最外面的数据类型是一个对象(或用PHP术语来说是一个关联数组)。 它有一个属性customers ,其中包含一个数组。 您可以通过Result.customers获得它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM