2016-11-16 6 views
1
$('#delete').on('click', function(e){ 

     var id = '123'; 

     // layer.confirm('confirm delete?', { 
     //  btn: ['ok','cancel'] //buttons 
     // }, function(){ 
      $.ajax({ 
       type: 'post', 
       url: '/test', // ===== could get id ===== 
       dataType: 'json' 
      }) 
      .done(function(data){ 
       if(data.code === 1){ 
        debugger // ===== could't get id ? ====== 
        layer.msg('delete success', {icon: 1}); 
       }else{ 
        layer.msg('success fail', {icon: 1}); 
       } 
      }) 
      .fail(function(err){ 
       layer.msg('success fail', {icon: 1}); 
      }) 
     // }) 

    }) 

私は$ .ajax()。done()を使用します。解雇されたとき、外部変数 "id"を "debugger"の行で得ることができませんでしたか?jquery ajax done()外部変数を取得できませんでした

あなたの投稿は主にコードであると思われますので、いくつかの単語を追加してください。実際、この問題は明らかです。

+0

投稿されたコードから、 'id'がそのスコープで利用可能であり、そうでない理由はありません。 – adeneo

答えて

2

Javascriptインタプリタは、実際に内部関数で使用されている場合にのみ、クロージャの変数をキャプチャします。

idを使用するように機能を変更すると、デバッガにその機能が表示されます。

+0

ありがとうございます! "console.log(id);"を追加するとidを出力できます。あなたの答えは、javascriptについての私の知識を、ありがとう! – sfp12

関連する問題