0

私は次のようなphpバックエンドからjsong応答を取得しています

  feedback =   {"html":"<form action='someurlonrest' method='post' style='margin-left:100px;' ><div style='padding: 10px;'>Ticket No<input type='text' id='tkt' name='tkt' ><\/div><div style='padding: 10px;'>somthing <input type='text' id='smthing' name='smthing' ><\/div><div style='padding: 10px;'>Query about <input type='text' id='query' name='query' ><\/div><input type='submit' class='classname' ><\/form>"}

しようとしているときに未定義のメッセージが表示されるのはなぜですか

alert(feedback.html);

更新しました

function get_fb_success(){

    var feedback = $.ajax({
        type: "POST",
        url: "feedback.php",
        async: false
    }).success(function(){
        setTimeout(function(){get_fb_success();}, 100000000000000000);
    }).responseText;
    alert(feedback);
    //$('#log_success').val('');


    $('#log_success').html(feedback.html);
    //$('div.feedback-box-success').html('success feedback');
}
4

2 に答える 2

1

2つのこと:

プロパティを追加して、JSONが返されることを期待するjQueryに通知し、コールバックdataType: 'json'にを渡すことを忘れないでください。responsesuccess

実行している時点$('#log_success').html()では、非同期呼び出しであるため、データはまだ実際には利用できません(おそらく、これが、これほど長く使用しようとしている理由setTimeout()ですか?)。代わりに、成功ハンドラーで実行してください。

function get_fb_success(){

    // feedback is a jqXHR object, *not* the JSON response!
    var feedback = $.ajax({
        type: "POST",
        url: "feedback.php",
        async: false,
        // Specify datatype
        dataType: 'json',
        success: function(response) {
           // Call .html() in the success() handler
           $('#log_success').html(response.html);
        }
    });
}
于 2012-09-28T14:51:58.853 に答える
0

あなたの質問に対する答えは、あなたが探しているオブジェクトの値を見ることができるということです。ここでフィドルを参照してください:http://jsfiddle.net/aWC8G/

その下では、ajax関数は少し奇妙に見えます。私はそれがこのように見えるべきだと思います:

function get_fb_success(){

    var feedback;
    $.ajax({
        type: "POST",
        url: "feedback.php",
        async: false,
        dataType: 'json',
        success:function(data){
            feedback = data;  //assuming you are 
        }
    });
    alert(feedback);
    //$('#log_success').val('');


    $('#log_success').html(feedback.html);
    //$('div.feedback-box-success').html('success feedback');
}

もちろん、これはサーバーへの非同期呼び出しではありません。実際の非同期ajaxが必要な場合は、次のようにします(関数は実際には値を返さないため、これは機能するはずです。

function get_fb_success(){

    $.ajax({
        type: "POST",
        url: "feedback.php",
        dataType: 'json',
        success:function(feedback){
            $('#log_success').html(feedback.html);
        }
    });

}
于 2012-09-28T14:54:55.627 に答える