jQuery Ajax works in IE, fails in Chrome, Safari
===

***Spoiler alert: I figured out the answer to my question while trying to write it (insert rubber duck reference here...), but it seemed like something that might actually help someone else, so I decided to continue posting the question.***

The title pretty much sums it up, but I'm completely at a loss for tracking down ***WHY*** my jQuery Ajax call is failing.

I've determined that the following call is what causes the failure:

    function getMatching(dateOfService, userName) {
        var params = '{dateOfService: "' + dateOfService + '", userName: "' + userName + '"}';
        $.ajax({
            type: "POST",
            url: "WebServices/Service.asmx/GetMatching",
            data: params,
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: show,
            error: ShowError
        });
    }

In IE 9, it works as I've designed it. In Safari and Chrome on OS X, it fails every time! What's worse, there's no error message to go along with it. Here's my `ShowError` function:

    function ShowError(a, b, c) {
        alert(c);
    }

I get an object for `a`, "error" for `b` and "" for `c`. I can't see anything useful in `a`. It's a bunch of methods (I don't know what to do with them) and its `responseText` property is "".

As you can probably gather, I'm using the developer tools to interrogate my page and set breakpoints, etc..., but nothing is popping out as obvious.

Here's how the method is called:

I'm iterating through a bunch of results (1, 2, 5, 100?) that have been returned from the server by another jQuery Ajax call. Each returned result gets a row in a table. Each row gets 2 buttons: the user can "reassign" the item or "challenge" the item, and I give them a button for each function.

Here's the code to create the button and handle the click event:

    var reassignBtn = $('<button>')
        .html('Reassign')
        .button()
        .click(function () {
            (function (_a, _b, _c) {
                reassign(_a, _b, _c);
                return false;
            })(a, b, c);
        });

***Here's where I found the answer:***
So, apparently, IE 9 was accepting the `return false;` line in the above code, even though it's (probably) not in the right spot. Chrome and Safari, however, were not. As I was examining jQuery closures more closely, I refined my code to the following (which works like a charm!!!):

    var reassignBtn = $('<button>')
        .html('Reassign')
        .button()
        .click(function () {
            (function () {
                var _a = a;
                var _b = b;
                var _c = c;
                reassign(_a, _b, _c);
            })();
            return false;
        });

I'd love some feedback here, but it seems that the `return false;` was not bubbling up properly in the WebKit-based browsers, but somehow **was** doing so in IE 9.

Parenthetically, JSLint yelled at my for the syntax of my anonymous function in my first method. That's why I changed it to the second format (i.e., not passing in variables as part of the method declaration).

I hope this helps someone else!