0

私の主題/タイトルとして。これが私のコードです

$(document).on("keyup","[name=BNAM]",function(){
    var nam = $(this).attr("name");
    var val = $(this).val();
    var typ = $(this).prev().val();

    $.post(
        "pro/bulletins_handle.php",
        {BTN:"QCHKNAM",BTYP:typ,BNAM:val},
        function(data){ 
        alert(nam+":"+val+":"+data); //display to check the return value of data
        var reTURN = data; //assign data into reTURN
            alert($(this).html());//Error: it say undefined
        });
    alert(reTURN); //Error: reTURN is not defined
});

**投稿からの返品は0または1です**


質問:
1)。$ .post関数から戻り値を取得するにはどうすればよいですか?
2)。なぜそれは未定義と言うのですか?$(this)は= [name = BNAM]ではありませんか?

4

2 に答える 2

3

まず、上にある行をalert(reTURN);function(data)ブロックに移動する必要があります。この関数内のコードは、データが正常にロードされたときに実行されます。以下のコードは(以下にありますが)、jsの非同期性のため、データの準備が整う前に実行されます。

また、$。postブロック内で使用しているこの変数は、あなたが考えていることを意味するものではありません。このコードはうまくいくはずです:

$(document).on("keyup","[name=BNAM]",function(){
    var $this = $(this);
    var nam = $this.attr("name");
    var val = $this.val();
    var typ = $this.prev().val();

    $.post(
        "pro/bulletins_handle.php",
        {BTN:"QCHKNAM",BTYP:typ,BNAM:val},
        function(data){ 
            alert(nam+":"+val+":"+data); //display to check the return value of data
            alert($this.html());
            alert(data);
        });    
});
于 2013-01-28T03:08:36.043 に答える
2

1

すべてのajaxリクエスト(を含む)は非同期$.postで実行されます。つまり、リクエストの後でコールバックの外側にあるコードの部分は、ajaxリクエストが完了する前に実行される可能性が高く、そのデータへのアクセスに依存することはできません。

データを使用する場合は、ajaxリクエストへのコールバックで使用する必要があります。

2

this上記のコンテキストでは、要素ではなく、jQueryXMLHttpRequestオブジェクトDOMです。メソッドはありませんhtml。このようなことをします:

$(document).on('keyup', '[name=BNAM]', function () {
   var $this = $(this);
   //$this is now available as the DOM element in the ajax callback
于 2013-01-28T02:43:04.800 に答える