I have a button that looks like:
<asp:Button ID="btnSave" runat="server" CssClass="SubmitButton" Text="Order >>" OnClientClick="return SaveChanges();" OnClick="btnSave_Click" />
A javascript function that looks like:
function SaveChanges() {
    var success = false;
    var arr1 = new Array();
    var arr2 = new Array();
    var arr3 = new Array();
    for (var i = 0; i < self.frames.length-1; i++) {
        arr1[i] = document.getElementById("frame" + i.toString()).contentWindow.getFramePSFID();
        arr2[i] = document.getElementById("frame" + i.toString()).contentWindow.getFrameHeading();
        arr3[i] = document.getElementById("frame" + i.toString()).contentWindow.saveSvg();
    }
    Scripts.WebServices.WSCommon.SaveChanges(arr1, arr2, arr3, function (result) {
        return true;
    });
}
The block where return true; is, is what happens once the web service call (which takes a few seconds) has finished and returned a result. Regardless of what I put there, btnSave_Click always triggers. (If I remove btnSave_Click and change return true; to alert('test');, the alert fires.).
What do I need to do to force btnSave_Click ONLY to fire once the web service has returned true?