Dialogs with Ajax

Problem

I have an fb:dialog with a form in it, which I’d like to submit to my server and have the result displayed back in my fb:dialog.

Solution

Facebook’s Mock Ajax is perfect for this kind of application, taking a lot of the pain out of doing things such as dynamic form submission without having to reload the page. The setup is pretty simple, requiring an fb:dialog, a trigger control, and a response page. Let’s start with the fb:dialog, which can be defined anywhere in your FBML (or in an included file if you’re going to use it in a few places throughout your app):

<fb:dialog id="ice_cream" cancel_button="true">
    <fb:dialog-title>I Scream! You Scream! We All Scream!</fb:dialog-title>
    <fb:dialog-content>
        <form id="ice_cream_flavors">
            <p>What's your favorite flavor?</p>
            <select name="flavors">
                <option>(Please choose a flavor!)</option>
                <option value="chocolate">Chocolate</option>
                <option value="vanilla">Vanilla</option>
                <option value="rockyroad">Rocky Road</option>
                <option value="moosetracks">Moose Tracks</option>
            </select>
        </form>
        <div id="ice_cream_image"></div>
    </fb:dialog-content>
    <fb:dialog-button
        type="submit"
        value="For Ice Cream!"
        clickrewriteurl="http://www.someserver.com/ice_cream_maker.php"
        clickrewriteid="ice_cream_image"
        clickrewriteform="ice_cream_flavors"/>
</fb:dialog>

Note

Some of you out there in reader land are inevitably going to read this example and say, “Moose Tracks!? He’s just making this stuff up.” I pity you. Go out to your nearest vendor of ...

Get Facebook Cookbook now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.