2016-01-08 2 views
-1

У меня есть сценарий:Почему это преобразование не эквивалентно?

$(document).ready(function() { 
    $('#userName').blur(function() { 
     $.ajax({ 
      url : 'GetUserServlet', 
      data : { 
       userName : $('#userName').val() 
      }, 
      success : function(responseText) { 
       $('#ajaxGetUserServletResponse').text(responseText); 
      } 
     }); 
    }); 
}); 

Я сделал это проще, таким образом:

$(document).ready(function() { 
    $('#userName').blur(getAjax()); 
}); 

function getAjax() { 
    $.ajax({ 
     url : 'GetUserServlet', 
     data : { 
      userName : $('#userName').val() 
     }, 
     success : function(responseText) { 
      $('#ajaxGetUserServletResponse').text(responseText); 
     } 
    }); 
}; 

Полученный код не работает. Почему это преобразование не эквивалентно?

+1

потому что вы звоните 'getAjax()' мгновенно. вместо этого используйте это: '$ ('# userName'). blur (getAjax);' – Louy

+1

'getAjax === function() {...}' while 'getAjax() === undefined' (т. е. возвращаемое значение) – Louy

ответ

5

Вы вызываете getAjax() вместо передачи его в качестве ссылки функции. Поскольку getAjax() не возвращает никакого значения, вы на самом деле вызова:

$('#userName').blur(undefined); 

Чтобы это исправить, просто передать ссылку:

$('#userName').blur(getAjax); 
Смежные вопросы