我已经搞好了很多年,调试工具或终端控制台没有问题,但是它在以下代码中不断弹出“出错”:
<script type="text/javascript">
function postCook()
{
$pageURL = window.location;
FB.api('/me/bgfapp:watch?movie=' + $pageURL,'post',
function(response) {
if (!response || response.error) {
alert('Error Occurred');
} else {
alert('Post was successful! Action ID: ' + response.id);
}
});
}
</script>
我试图回显$ pageURL并成功返回当前网址,所以我无法弄清楚上面的代码有什么问题
更新时间:2012年1月30日
错误说明:发生错误[object Object] [object Object]
答案 0 :(得分:1)
您可能已经找到了解决方案,但希望这会对其他人有帮助。
这里的问题是您不知道响应对象中子节点的名称。如果您无法命名特定节点,那么您将不断收到该错误消息:“发生错误[对象对象]消息”
我有一个简单的解决方法,允许您在不知道响应对象的子节点名称的情况下查看错误消息。 JSON.stringify将简单地将整个对象转换为字符串,允许您查看其内容。它不会很漂亮,但你肯定能够在那里看到错误信息。
试试这个:
<script type="text/javascript">
function postCook()
{
$pageURL = window.location;
FB.api('/me/bgfapp:watch?movie=' + $pageURL,'post', function(response) {
if (!response || response.error) {
alert(JSON.stringify(response));
}
else {
alert('Post was successful! Action ID: ' + response.id);
}
});
}
另一种解决方案是将响应对象的内容输出到控制台而不是执行警报,只需将代码示例中的第7行替换为:
console.log(response);
从此处,您可以打开Web浏览器的开发控制台并遍历响应对象的内容。由于控制台并不总是可用(例如,phonegap应用程序),因此前一种解决方案有时更合适。
答案 1 :(得分:0)
根据您的新错误消息,您似乎需要查看response.error
所说的内容。你的逻辑说你要么根本没有回应,要么得到response.error
。你应该首先找出你所处的情况并采取相应的行动。
response.responseText
和response.error.responseText
未定义,因为它们不会返回给您。
$pageURL = '/me/bgfapp:watch?movie=' + window.location;
FB.api($pageURL,'post',
function(response) {
if (!response) {
alert('Error Occurred I got no response with ' + $pageURL);
}
else if (response.error) {
alert('Error Occurred '+ response.error);
} else {
alert('Post was successful! Action ID: ' + response.id);
}
});
我的建议是尝试简单并按照自己的方式行事。调试您正在检查的所有变量。如果您没有收到回复,则可能是您的API端点调用不存在。如果您收到错误,那么您的通话错误或未经过身份验证。