0

私はちょうど数時間それに不満を感じていました.本当の専門家の助けが必要です. 以下のコードでは、クラスのボタンをクリックするとfb_detail_btn、.ajax 関数から返されたデータ結果が追加されることを期待しています。ただし、以前は ajax が追加されていなかったデータ ( $(this).append("<div>aaaaaa</div>");) は、ajax が実行されると常に消去されます。私のテストでは、php ファイルが正しく実行されていることが示されているため、変数として割り当てられた $(this) に ajax から返されたデータを追加できない理由が問題です。

JavaScript

//GET FEEDBACK DETAIL METHOD//
function get_feeback_detail(result) {
    alert('inside get_feeback_detail, btn_clicked_id is '+btn_clicked_id);
    return $.ajax ({
        type: "POST",
        url: "../x_get/get_feedback_detail.php",
        data:{fb_id: btn_clicked_id},
    }).then(function(data) {
                alert('then ran!');
                //loading_effect_hide();
                var dataSplit = data.split("|");
                commCode = dataSplit[0];
                //alert(dataSplit[1]);
                if(commCode !=1){
                    $('#testInfo').html(dataSplit[1]);
                    $('#testInfo').addClass("errorRed");
                    //$('.fb_review_table_section').empty();
                    alert('returned false for then in ajax!');
                    return false;
                }else{
                    result =dataSplit[1];
                }   
                alert('result inside then is...   '+result);
                //alert(selectedDiv.attr('class'));
                //return result;
                selectedDiv.append(result);
            //loading_effect_hide();    

    }).fail(function(x,s,e) {
            alert(s+": "+e);
            alert('detail button failed!');// an error occurred

            //alert(result);
        });//$.ajax END

    alert('inside get_feeback_detail, result is...   '+result);


};//get_feeback_detail() END



//Detail Button
$(document).on('click','.fb_detail_btn',function(){
    selectedDiv=$(this);
    selectedDiv.append("<div>aaaaaa</div>");
    elementPropertyName = selectedDiv.attr('name');
    btnNames = $(this).attr("name").split("_");
    btn_clicked_id=btnNames[1];
    result="";
    get_feeback_detail();
    selectedDiv.append("<div>bbbbbbb</div>");
}); 

HTML

<div class="fb_detail_btn" name="detail_68">aaadadadadadad</div>

=更新= 現在、作業の結果は .then に到達しますが、結果は追加されません。

4

2 に答える 2

0

あなたは約束を悪用しています。

then()コールバックから新しい結果を返す必要があります。

    return $.ajax ({
        type: "POST",
        url: "../x_get/get_feedback_detail.php",
        data: 'fb_id='+btn_clicked_id,
        dataType:'json',//ACW-soemthing new!
    }).then(function(data) {
        ...
        return result;
    });
于 2013-08-14T16:13:21.607 に答える
0

このコードは機能しません:

return $.ajax ({
    …
}).then(function(data) {
    … // callback
    return result;
}); //$.ajax END

alert('inside get_feeback_detail, result is...   '+result);
selectedDiv.append(result);

ジャックスは非同期ですアラートでわかるように、結果はundefinedその部分が実行されたときです。コールバックでのみ使用できます。非同期呼び出しからの応答を返すにはどうすればよいですか? を参照してください。、および使用

return $.ajax ({
    …
}).then(function(data) {
    … // callback
    // return result; 
    alert('inside ajax callback, result is...   '+result);
    selectedDiv.append(result); // works now!
});
于 2013-08-14T18:45:35.050 に答える