2016-11-16 2 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» в строке «отладчик»?jquery ajax done() не может получить внешнюю переменную

Для reslove «Похоже, что ваш пост - это в основном код, добавьте еще несколько деталей», добавьте несколько слов. Собственно, я объясню, что эта проблема ясна.

+0

Из опубликованного кода 'id' доступен в этой области действия, и нет причин, по которым он не будет. – adeneo

ответ

2

Интерпретатор Javascript будет захватывать переменные только в закрытии, если они фактически используются во внутренней функции.

Если вы измените свою функцию на использование id в любом месте, она появится в отладчике.

+0

Большое спасибо! Я могу вывести id при добавлении «console.log (id);». Ваш ответ обновит мои знания о javascript, спасибо! – sfp12

Смежные вопросы