【问题标题】:"Request Dialog" requestCallback when clicking Cancel or Close button单击取消或关闭按钮时的“请求对话框”requestCallback
【发布时间】:2011-12-07 15:12:12
【问题描述】:

我是 Facebook 应用程序开发的新手,也是 JavaScript 和 PHP 编程的新手。

我目前正在开发一个 Facebook 应用程序,但目前卡在请求对话框窗口中。

当请求对话框出现时,我选择我想要的朋友然后点击“发送请求”,requestCallback(response)被执行,收到请求的朋友按预期通知。但是,如果我单击“取消”或蓝色关闭按钮, requestCallback(response) 也会执行,但选定的朋友不会收到有关请求的通知。

这是我的代码:

function requestCallback(response)
{
    //console.log(response);
    location.href='step2.php';
}

所以,无论我点击“取消”还是关闭按钮,上面的脚本仍然执行(移动到我指定的页面step2.php。)

我想要的是当用户单击取消按钮或关闭模式窗口按钮时,页面保持在同一页面。

有人知道如何解决这个问题吗?

谢谢!

【问题讨论】:

    标签: facebook request friend invite


    【解决方案1】:

    您可以只检查 Facebook response 对象中的内容,因为无论是否发送请求,它都不一样!

    类似:

    function requestCallback(response)
    {
        if(response && response.request_ids) {
             // Here, requests have been sent, facebook gives you the ids of all requests
             //console.log(response);
             location.href='step2.php';
        } else {
             // No requests sent, you can do what you want (like...nothing, and stay on the page).
        }
    }
    

    或者,如果您使用的是新结构(Request 2.0 Efficient):

    function requestCallback(response)
    {
        if(response && response.request) {
             // Here, requests have been sent, facebook gives you the request and the array of recipients
             //console.log(response);
             location.href='step2.php';
        } else {
             // No requests sent, you can do what you want (like...nothing, and stay on the page).
        }
    }
    

    查看响应对象的结构来制定你的条件。即使您点击 close 也会触发回调,以便有可能注意到您的用户何时退出对话框。由您来验证他是否发送了请求,并按照您的意愿行事! :)

    还有一些重要的事情: Facebook 几周前更新了他们的请求系统,在您的应用设置中提供了“请求 2.0”。默认情况下它是关闭的,但是如果你激活它,当向人们发送请求时,response 对象的结构将会改变。所以你必须在回调中更新你的条件!

    这里解释了一切: http://developers.facebook.com/blog/post/569/

    【讨论】:

    • 谢谢,完全忘记添加这部分了,因为它在链接中! :)
    • 谢谢你们,看来我需要学习如何在 if 和 else 中编写 javascript :)
    猜你喜欢
    • 2015-02-25
    • 2013-04-06
    • 2011-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-06
    • 1970-01-01
    相关资源
    最近更新 更多