Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用AngularJS控制器从Google App Engine而不仅仅是json文件获取数据_Javascript_Json_Angularjs_Google App Engine_Google Cloud Endpoints - Fatal编程技术网

Javascript 如何使用AngularJS控制器从Google App Engine而不仅仅是json文件获取数据

Javascript 如何使用AngularJS控制器从Google App Engine而不仅仅是json文件获取数据,javascript,json,angularjs,google-app-engine,google-cloud-endpoints,Javascript,Json,Angularjs,Google App Engine,Google Cloud Endpoints,我是web开发新手,正在尝试获取已插入到Google App Engine数据存储中的数据,并使用AngularJS有选择地将其发布到页面上。我能够使用JSON文件,并且可以使用内联javascript在html文件上发布我的应用程序引擎数据库的内容,但我希望使用AngularJS。我试图遵循上列出的提示,但它似乎缺少信息,并且没有解释应该在何处添加“gapi.client.guestbook.messages.insert(message.execute();”。我使用objectify对ap

我是web开发新手,正在尝试获取已插入到Google App Engine数据存储中的数据,并使用AngularJS有选择地将其发布到页面上。我能够使用JSON文件,并且可以使用内联javascript在html文件上发布我的应用程序引擎数据库的内容,但我希望使用AngularJS。我试图遵循上列出的提示,但它似乎缺少信息,并且没有解释应该在何处添加“gapi.client.guestbook.messages.insert(message.execute();”。我使用objectify对api进行注释,并使用java编写新的实体和api

例如,下面的代码在我的程序中引用了一个json文件,效果很好

listingControllers.controller('ViewItemsCtrl', [
                '$scope',
                '$routeParams',
                '$http',
                function($scope, $routeParams, $http) {
                    $http.get('phones/' + $routeParams.phoneId + '.json').success(
                            function(data) {
                                $scope.phone = data;
                                $scope.mainImageUrl = data.images[0];
                            });

                    $scope.setImage = function(imageUrl) {
                        $scope.mainImageUrl = imageUrl;
                    }
                    $('.dropdown-toggle').dropdown();
                } ]);
但当我试图制作一个控制器来引用Google数据存储时,我不知道该怎么做。根据我的研究,我最好的猜测如下,但它显然没有连接到数据库。如果在没有Angular的情况下对应用程序引擎执行简单的get或insert调用,我首先调用函数init(),该函数加载gapi并调用getListings和insertListings。我需要在控制器中执行此操作吗?这是我的代码,部分基于

以下代码用于内联javascript,我可以使用它从数据存储中获取和插入数据。我成功地使用它上传了新数据,但我似乎不知道如何在新页面上使用插入的数据。谢谢你,请让我知道你是否知道如何做到这一点,或者可以详细介绍谷歌网页应用程序页面上的介绍

<script type="text/javascript">
        function init() {
                //Parameters are APIName,APIVersion,CallBack function,API Root
                gapi.client.load('listingserviceapi', 'v1', null, 'https://molt-team-233.appspot.com/_ah/api');

                document.getElementById('getListings').onclick = function() {
                    getListings();
                  }
                  document.getElementById('insertListing').onclick = function() {
insertListing(); 
}
        }

        //List Quotes function that will execute the list call
        function getListings() {
                gapi.client.listingserviceapi.getListings().execute(function(resp) {
                        if (!resp.code) {
                                resp.items = resp.items || [];
                                var result = "";
                                for (var i=0;i<resp.items.length;i++) {
                                        result = result+ resp.items[i].title + "..." + "<b>" + resp.items[i].description + "</b>" + "[" + resp.items[i].price + "]" + "<br/>";
                                }
                                document.getElementById('getListingsResult').innerHTML = result;
                        }
                });
        }
        //Insert function
function insertListing() {
//Validate the entries
var _title = document.getElementById('title').value;
var _price = document.getElementById('price').value;

//Build the Request Object
var requestData = {};
requestData.title = _title;
requestData.price = _price;

gapi.client.listingserviceapi.insertListing(requestData).execute(function(resp) {
if (!resp.code) {
//Just logging to console now, you can do your check here/display message
console.log(resp.id + ":" + resp.author + ":" + resp.message);
}
});
}

    </script>
<script src="https://apis.google.com/js/client.js?onload=init"></script>

函数init(){
//参数为APIName、APIVersion、回调函数、API根
load('listingserviceapi','v1',null,'https://molt-team-233.appspot.com/_ah/api');
document.getElementById('getListings')。onclick=function(){
getListings();
}
document.getElementById('insertListing')。onclick=function(){
insertListing();
}
}
//List Quotes函数将执行List调用
函数getListings(){
gapi.client.listingserviceapi.getListings().execute(函数(resp){
如果(!响应代码){
resp.items=resp.items | |[];
var结果=”;

对于(var i=0;i从Angular代码的角度来看,数据来自JSON还是数据存储没有区别。区别在于服务器端代码:您需要在GAE应用程序中编写一个方法来响应请求、查询数据存储、构建JSON blob并返回它


您正在参考的教程试图通过使用GAE Cloud Endpoints来抽象其中的一些内容。但这仍然需要在服务器端进行大量的设置,如果您只想返回一些JSON,那么这并不是必须的。

谢谢。有没有一种方法可以编写类似于上面的getListings方法但使用JSON的方法格式,而不是“结果+响应项[i]。标题…”?如何创建一个临时用于获取所需数据的json blob?您知道有哪些教程或文章可以帮助我做到这一点吗?但是
getListings
是一个客户端函数。在GAE应用程序的服务器端,您需要一些东西,将数据创建为json并在响应客户端调用时返回:你没有说你在服务器上使用什么语言,但在Python中你可以做
json.dumps(无论什么)
,毫无疑问Java/Go/PHP也有类似的功能。谢谢。我正在使用Java,发现我可以使用json simple来做与json.dumps(x)等价的事情。我对应该在何处添加java代码以及如何调用它感到有点困惑。我应该将其包含在我的listingServiceAPI中吗?如果json是一个方法而不是json文档的结果,那么我如何通过控制器访问json?我还看到有人在下面的链接中讨论另一个方法,我很好奇是否有任何优势通过GAE创建json。事实证明我正在这样做,但只需要修复我使用angular访问json的方式。谢谢
<script type="text/javascript">
        function init() {
                //Parameters are APIName,APIVersion,CallBack function,API Root
                gapi.client.load('listingserviceapi', 'v1', null, 'https://molt-team-233.appspot.com/_ah/api');

                document.getElementById('getListings').onclick = function() {
                    getListings();
                  }
                  document.getElementById('insertListing').onclick = function() {
insertListing(); 
}
        }

        //List Quotes function that will execute the list call
        function getListings() {
                gapi.client.listingserviceapi.getListings().execute(function(resp) {
                        if (!resp.code) {
                                resp.items = resp.items || [];
                                var result = "";
                                for (var i=0;i<resp.items.length;i++) {
                                        result = result+ resp.items[i].title + "..." + "<b>" + resp.items[i].description + "</b>" + "[" + resp.items[i].price + "]" + "<br/>";
                                }
                                document.getElementById('getListingsResult').innerHTML = result;
                        }
                });
        }
        //Insert function
function insertListing() {
//Validate the entries
var _title = document.getElementById('title').value;
var _price = document.getElementById('price').value;

//Build the Request Object
var requestData = {};
requestData.title = _title;
requestData.price = _price;

gapi.client.listingserviceapi.insertListing(requestData).execute(function(resp) {
if (!resp.code) {
//Just logging to console now, you can do your check here/display message
console.log(resp.id + ":" + resp.author + ":" + resp.message);
}
});
}

    </script>
<script src="https://apis.google.com/js/client.js?onload=init"></script>