繁体   English   中英

AngularJS和PHP JSON / ng-init / ng-repeat

[英]Angularjs & PHP JSON / ng-init / ng-repeat

我正在尝试从返回的PHP json结果中进行ng-repeat。但是我有一些错误代码=)

angular.min.js:117错误:[$ parse:ueoe] **对不起,我的英语。

JSON结果:

[{"id":"1","fullname":"Ad Soyad","email":"test@windowslive.com","tel":"12332123","message":"Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.","time":"12/05/2016","picture":"assets/admin/layout3/img/avatar1.jpg","isread":"1"},
{"id":"2","fullname":"Mahmut Tuncer","email":"test@windowslive.com","tel":"1233211","message":"Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.","time":"12/05/2016","picture":"assets/admin/layout3/img/avatar1.jpg","isread":"1"}]

a.php

$datacontactform = $sorgu = $dbquery->multisorgu('contactform');
   <ul  ng-init="contactlist = <?php echo $datacontactform; ?>">
    <li ng-repeat="data in contactlist"> {{data.fullname}}</li>
   </ul>

b.php

public function multisorgu($tablo,$where = null, $orderby = null, $limit = null){
    // MYSQL JSON RESULT    
    global $Baglan;
    $sorgu = mysqli_query($Baglan, "SELECT * FROM $tablo $where $orderby $limit");
    $result = array();
    if(mysqli_num_rows($sorgu) > 0){
        while($bak = mysqli_fetch_assoc($sorgu)){
            $result[] = $bak;
        }
    }
    //UTF-8 JSON_UNESCAPED_UNICODE
    $json_response = json_encode($result,JSON_UNESCAPED_UNICODE);
    return $json_response;
}

1.为什么会出错:

<ul  ng-init="contactlist = <?php echo $datacontactform; ?>">

这行引发错误,因为它喜欢ng-init=" contactlist = somestring " ,但是ng-init除外的是喜欢ng-init=" contactlist = someobject"

2.解决方案:

如果使用角度方式, Ajax是不错的选择。

如果没有,请尝试以下操作:

$datacontactform = $sorgu = $dbquery->multisorgu('contactform');
?>
<script type="text/javascript">
    var datacontactform = JSON.parse('<?php echo $datacontactform; ?>');
</script>
   <ul  ng-init="contactlist = datacontactform ">
    <li ng-repeat="data in contactlist"> {{data.fullname}}</li>
   </ul>

任何问题都让我知道。 希望它能工作。

我想您在PHP变量中得到的是JSON String而不是Object。 您可以使用JSON.parse方法将字符串解析为对象,并且如果您从PHP获得有效的响应,它应该可以工作。 在下面的示例中,我只是在Controller内对JSON对象进行了硬编码以供参考。

<!DOCTYPE html>
<html ng-app="mainApp" lang="en">
<head>
  <title>JSON PHP</title>
<script src="angular.min.js"></script>
</head>
<script>

     var app = angular.module('mainApp', []);
     app.controller('MyCtrlr', function ($scope, $http) {
                    //Store your JSON Response
                                 $scope.jsonResp = [{"id":"1","fullname":"Ad Soyad","email":"test@windowslive.com","tel":"12332123","message":"Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.","time":"12/05/2016","picture":"assets/admin/layout3/img/avatar1.jpg","isread":"1"},
{"id":"2","fullname":"Mahmut Tuncer","email":"test@windowslive.com","tel":"1233211","message":"Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.","time":"12/05/2016","picture":"assets/admin/layout3/img/avatar1.jpg","isread":"1"}];

                       //});

 });
</script>

<body>
   <div ng-controller="MyCtrlr">
         <ul  ng-init="contactlist = jsonResp">
            <li ng-repeat="data in contactlist"> {{data.fullname}}</li>
         </ul>
    </div>
</body>

</html>

谢谢你们的帮助。 但我不能工作

我试图以这种方式,但现在我无法使用ng-repeat来工作。

<script type="text/javascript">
app.factory('jsonparse',function(){
    datacontactform = JSON.parse('<?php echo $datacontactform ?>'); 
    return datacontactform;
})

mycontroller:

 $scope.cd = datacontactform;
    console.log($scope.cd);

控制台结果:

Object {1: Object, 2: Object}
1:Object
email:"tester@windowslive.com"
fullname:"tester tester"
id:"1"
isread:"1"
message:
"Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat."
picture:"assets/admin/layout3/img/avatar1.jpg"
tel:"123123123"
time:"12/05/2016"
__proto__:
2:Object
email:"tester@windowslive.com"
fullname:"tester tester"
id:"1"
isread:"1"
message:
"Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat."
picture:"assets/admin/layout3/img/avatar1.jpg"
tel:"123123123"
time:"12/05/2016"
__proto__:

暂无
暂无

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

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