Диалог запроса requestCallback при нажатии кнопки «Отмена» или «Закрыть»

Я новичок в разработке приложений для Facebook, а также новичок в программировании на JavaScript и PHP.

В настоящее время я разрабатываю приложение Facebook, но в настоящее время застрял в диалоговом окне запроса.

Когда появляется диалоговое окно «Запрос», я выбираю друзей, которых хочу, а затем нажимаю «Отправить запросы», выполняется requestCallback (ответ), и друзья, получающие запросы, уведомляются, как и ожидалось. Но если я нажму «Отмена» или кнопку закрытия синего цвета, requestCallback (ответ) также будет выполнен, но выбранные друзья не получат уведомление о запросе.

Вот мой код:

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

Итак, независимо от того, нажимаю ли я кнопку «Отмена» или кнопку «Закрыть», приведенный выше скрипт все еще выполняется (переход на страницу step2.php, которую я указываю.)

Я хочу, чтобы когда пользователь нажимал кнопку отмены или кнопку закрытия модального окна, страница оставалась на той же странице.

Кто-нибудь знает, как решить эту проблему?

Спасибо!


person mokalovesoulmate    schedule 14.10.2011    source источник


Ответы (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).
    }
}

Посмотрите на структуру объекта ответа, чтобы составить свое условие. Обратный вызов запускается, даже когда вы нажимаете закрыть, чтобы иметь возможность заметить, когда ваш пользователь закрывает диалоговое окно. Вы должны проверить, отправлял ли он запросы, и действовать так, как хотите! :)

Кроме того, кое-что важное: несколько недель назад Facebook обновил свою систему запросов, сделав доступной «Запросы 2.0» в настройках ваших приложений. По умолчанию он отключен, но если его активировать, изменится структура объекта response при отправке запросов людям. Так что вам придется обновить свое условие в обратном вызове!

Все объясняется здесь: http://developers.facebook.com/blog/post/569/

person evanesis    schedule 14.10.2011
comment
Спасибо, совсем забыл добавить и эту часть, так как она была в ссылке! :) - person evanesis; 14.10.2011
comment
Спасибо, ребята, похоже, мне нужно научиться писать javascript внутри if и else :) - person mokalovesoulmate; 17.10.2011