使用Google API JavaScript客户端时出现未压缩的类型错误
Uncaught TypeError when using Google API JavaScript Client
我正在使用云端点在谷歌应用程序引擎上开发一个简单的Tic-Tac-Toe。我的API名称是tictactoe2D。在我的API中,我只有一个名为tictactoe2D.compute2DMove()的端点方法,我已经在API资源管理器中测试了它,并且运行得非常好。
现在我正在创建游戏的前端,并使用Google API JavaScript客户端库与我的端点方法进行通信。我遵循了与Getting Started页面中所示完全相同的过程,这是一个关于使用库的完整教程。
以下是board.html的代码片段,加载Javascript库-
<head>
<title>Tic Tac Toe 3D</title>
<meta http-equiv="content-type" charset="utf-8" content="text/html"/>
<link href="css/main.css" rel="stylesheet" type="text/css">
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://apis.google.com/js/client.js?onload=onLoadCallback"></script>
<script type="text/javascript">
function onLoadCallback() {
gapi.client.setApiKey('AIzaSyB7p7mH_vZGgtrbF4ntmKN2nBcsRyRFY1w');
gapi.client.load('tictactoe2D', 'v1');
}
</script>
<script type="text/javascript" src="js/render.js"></script>
</head>
这是render.js中的代码,添加了处理所有方块的点击事件的功能,还与我的端点方法通信-
$(document).ready(function() {
$("#board td").click(function() {
$(this).html("X");
var boardString = [];
var buttons = document.querySelectorAll('td');
for (var i=0; i<buttons.length; i++) {
boardString.push(buttons[i].innerHTML);
}
boardString.join('');
gapi.client.tictactoe2D.compute2DMove({'state': boardString}).execute(function(resp) {
document.write(resp.result.state);
});
});
});
这是整个代码的JSFiddle。
当我试图点击游戏板上的一个方块时,会出现问题。出乎意料的是,什么都没发生我在Chrome中打开了JavaScript控制台,发现每当我点击一个正方形时,控制台都会显示以下错误
Uncaught TypeError: Cannot read property 'compute2DMove' of undefined
我一直不知道为什么会发生这种情况,我该如何解决。有人能帮我吗?事先非常感谢。
在JS控制台上观察到一个新错误后,我自己修复了这个错误-错误是-
Failed to load resource: The server responded with a status of 403 (Forbidden)
我检查了服务器返回的JSON对象,该对象是这样的——
{"error":{"errors":[{"domain":"global","reason":"sslRequired","message":"SSL is required to perform this operation."}],"code":403,"message":"SSL is required to perform this operation."}}
看到这一点后,我猜测没有使用安全连接(HTTPS)连接到应用程序,这就是为什么服务器没有加载所需的数据。为了解决这个问题,我需要强制要求每次加载应用程序时都要使用安全连接为此,我在web.xml-中添加了以下标签
<security-constraint>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
我在appspot上更新了我的应用程序,并查看了JS控制台那里没有错误,我的端点方法也执行了我希望这些信息对任何面临类似问题的人都有帮助。
此外,我发现gapi
库在过去存在一些稳定性问题,并且保护API调用不受任何可能的缺陷的影响的最佳方法是使用gapi.client.request()
构建REST请求,而不是使用JSON-RPC请求(请参阅,使用gap.client.request构造REST请求)。构造REST请求可能很长很麻烦,但也很安全。
- 同样,同样的错误'ahorcado.js:26未捕获类型错误:无法读取属性'beginPath'
- 输入类型文件的未捕获类型错误
- "未捕获类型错误/丢弃意外“;因为一句台词而出现?(HTML w/<脚本>)
- Javascript未捕获类型错误:无法读取属性'0'的未定义
- 为什么我得到“;未捕获类型错误”;使用Flexslider时
- VM5111:1249未捕获类型错误:无法读取属性'x'为null
- 使用Google Analytics API的区域图-未采集类型错误无法读取'库'的未定义
- vendors.js:未捕获类型错误:无法读取属性'应用'使用webpack时未定义的
- 为什么我会得到一个“;未捕获类型错误”;当我介绍D3.transition()时
- 未捕获类型错误:无法设置未定义的属性“操作”
- 反应.js:未捕获类型错误:未定义不是一个函数
- JavaScript 错误:未捕获类型错误:foo 不是一个函数
- 如何处理 getJSON 调用上的“未捕获类型错误:无法设置未定义的属性'prop'”
- 数据表未捕获类型错误
- 图表未捕获类型错误:无法读取属性
- Backbone.js Collection fetch()抛出未捕获类型错误:无法读取属性'idAttribu
- 谷歌地图API多段线创建失败;未捕获类型错误:数字不是函数;
- 谷歌URL缩短器API-未压缩类型错误:未定义不是一个函数
- Youtube数据API-未压缩类型错误:无法读取属性'搜索'的未定义
- 使用Google API JavaScript客户端时出现未压缩的类型错误