0

サーバーから送信された JSON 応答を使用しようとしています。Firebug は、サーバーから返された JSON オブジェクトが有効であることを示していますが、何らかの理由で、以下のコードは失敗します ... :

<script type="text/javascript">

function isValidEmailAddress(email){
// do something ...
}

$(document).ready(function(){
    $("form").on("submit", function(e){
        if ( isValidEmailAddress($('#invite-email').val()) ) {
            // setup some local variables
            var $form = $(this),
                // let's select and cache all the fields
                $inputs = $form.find("input, select, button, textarea"),
                // serialize the data in the form
                serializedData = $form.serialize();

            // let's disable the inputs for the duration of the ajax request
            $inputs.attr("disabled", "disabled");

            // fire off the request to /form.php
            $.ajax({
                url: '<?php echo $url; ?>',
                type: "post",
                data: serializedData,
                // callback handler that will be called on success
                success: function(response, textStatus, jqXHR){
                    var is_ok = response.error_code == 0 ? true : false;  // array access also fails 
                    var msg = response.msg; // array access also fails 

                    alert(is_ok);
                    alert(msg);

                    if (is_ok){
                        $('#invite-member').text(msg);
                    }
                    else{
                        $('#error-msg').text(msg);
                        $('#error-msg').show("slow");                        
                    }
                },
                // callback handler that will be called on error
                error: function(jqXHR, textStatus, errorThrown){
                    // log the error to the console
                    console.log(
                        "The following error occured: "+
                        textStatus, errorThrown
                    );
                },
                // callback handler that will be called on completion
                // which means, either on success or error
                complete: function(){
                    // enable the inputs
                    $inputs.removeAttr("disabled");
                }
            });
        }
        else {
            $('#invite-email').val('');
        }

        return false;
    });
});

</script>

私は明らかにばかげたことをしています - しかし、私はそれに指を置くことができないようです. 私は何が欠けていますか?

4

1 に答える 1

1

起動時にこの変数を設定してみてください。

$.ajaxSetup({
    contentType : 'application/json',
    dataType : "json"
});

これらは、返されるデータ型を JSON として解釈する必要があることを jQuery に伝えます。

于 2012-12-04T13:32:11.843 に答える