0

次のようにphpから応答を取得します。

{"success":false,"errors":{"category_id":"category id must not be empty","name":"name must not be empty","uri":"uri must not be empty","price":"price must not be empty","status":"status must not be empty"}}

エラーを表示したい:

form.submit(function(ev) {
    ev.preventDefault();

    $('.help-inline').remove();

    var data = $(this).serialize();

    $.post($(this).attr('action'), {'data': data}, function(result) {

        if (result.success == true) {
            console.log('true');
        } else {
            $.each(result.errors, function(label, error) {
                console.log(label+' '+error);
            });
        }
    });
});

しかし、それは私を投げますTypeError: e is undefined

古いバージョンでは動作しますが、1.8.3 では動作しません。私が間違っていることは何ですか?

私のphpコードは次のとおりです。

            $errors = $post->errors('');
            $this->response->body(json_encode(array(
                'success' => FALSE,
                'errors' => $errors,
            )));

$errors は連想配列です:

array(5) (
    "category_id" => string(29) "category id must not be empty"
    "name" => string(22) "name must not be empty"
    "uri" => string(21) "uri must not be empty"
    "price" => string(23) "price must not be empty"
    "status" => string(24) "status must not be empty"
)
4

3 に答える 3

2

あなたresult.errorsは、反復したい要素を1つだけ持つ配列な$.eachので、次の行を置き換えるだけです:

$.each(result.errors, function(label, error) {

これについて:

$.each(result.errors[0], function(label, error) {

それはあなたが望むことをするはずです。

于 2012-11-29T08:54:59.233 に答える
0

PHP と応答は問題ないようですが、JavaScript で json データ型を使用するとどこで言うのかわかりません。console.log(result) コードを使用すると、それを確認できます。結果がオブジェクトか文字列かを確認します。として

form.submit(function(ev) {
    ev.preventDefault();

    $('.help-inline').remove();

    var data = $(this).serialize();

    $.post($(this).attr('action'), {'data': data}, function(result) {
        console.log('Result is: ' + typeof(result));
        if (result.success === true) {
            console.log('true');
        } else {
            $.each(result.errors, function(label, error) {
                console.log(label+' '+error);
            });
        }
    });
}, "json");
于 2012-11-29T21:02:01.783 に答える
0

JSON では、エラー配列には、プロパティを持つオブジェクトである単一の要素のみが含まれているように見えます。次を使用してみてください。

$.each(result.errors[0], function(label, error) {
于 2012-11-29T08:55:39.843 に答える