1

jqueryフォームプラグインを使用して画像をアップロードしていますが、すべてうまくいきます。私が抱えている問題は、サーバーからphpスクリプトによって送信されたjson応答に関してです。

//This is the way i output and encode the jason in my php script
$errors['success'] = false;
$errors['.imgContainer'] = 'Image exceeds maximum size.';
echo json_encode($errors);


//Json response copied from console in FireFox 14.0.1
{"success":false,".imgContainer":"Image exceeds maximum size."}


//Console response for:
console.log(xhr.responseText["success"]);
Undefined
//This should have been true right?

私はjquery 1.8.0を使用しています

//My Jquery
$('.imageForm').live('click', function(e) {
        if (!isValid) {
            e.preventDefault();
        }
        else {
            var bar = $('.bar');
            var percent = $('.percent');
            var response = $('.imgHolder');
            var status = $('#status');

            $('form').ajaxForm({
                contentType : "application/json; charset = utf-8",
                dataType: "json",
                type    : "POST",
                url     : "imgHandle.php",
                cache : false,


                //target: "#status",

                beforeSend: function() {
                    status.empty();
                    var percentVal = '0%';
                    bar.width(percentVal)
                    percent.html(percentVal);
                    $(".imgContainer :input").attr("disabled", true);
                },
                uploadProgress: function(event, position, total, percentComplete) {
                    var percentVal = percentComplete + '%';
                    bar.width(percentVal)
                    percent.html(percentVal);
                },
                complete: function(xhr) {

                    console.log(xhr.responseText["success"]);


                }
            });
        }

    });

(xhr.responseText["success"]) にアクセスしようとすると undefined になるのはなぜですか? true または false と .imgContainer の値を取得したいと思っていました

たぶん、それをjsonとして解釈していません。どうすればこれを解決できますか?

4

1 に答える 1

3

successの代わりに使用する必要がありcompleteます。ではcomplete、生の JSON 文字列にしかアクセスできず、オブジェクトとしてアクセスする前に解析する必要があります。

パラメータにsuccessは JSON オブジェクト (文字列ではない) があるため、直接アクセスできます。

success: function(data) {
   console.log(data.success);
}
于 2012-12-06T11:00:57.063 に答える