Jquery cfml - ни один из скриптов не является исполняемым - PullRequest
1 голос
/ 09 марта 2012

У меня есть страница CF с CFdiv. Cfdiv привязан к элементу на странице. Главная страница содержит скрипт. Ни один из сценариев не выполняется для элементов в CFdiv. Кажется, есть проблема с вызовом ajax. Когда я вынимаю этот код, кажется, что остальная часть кода включена в Firebug, но все равно не будет выполняться.

<script type="text/javascript">
  $(document).ready(function () {
    $('#candidatesubmit').on('click', function () {
      $.ajax({
      type: 'POST',
      url: 'actEditStatusForm.cfm',
      data: 'form=',
      error: function (xhr, textStatus, errorThrown)(
      // show error 
      alert(errorThrown);),
      success: function (response1, textStatus, jqXHR)(
      alert('success');)
       });
    ColdFusion.Grid.refresh('candidatesGrid', true);
  });
  $(function () {$("#JDOrgChartRESOutlineSentToCand").datepicker({dateFormat: 'yy/mm/dd'});});
  $(function () {$("#IndepthWRec").datepicker({dateFormat: 'yy/mm/dd'});});
</script>

1 Ответ

4 голосов
/ 09 марта 2012

Во-первых, у вас есть некоторые синтаксические ошибки.Возможно, это просто проблема, как указано выше, а не в вашем реальном коде.Но убедитесь, что тело вашей функции ошибок и успеха заключено в фигурные скобки, а не в скобки.

Поэтому вместо этого:

error: function (xhr, textStatus, errorThrown)(
  alert(errorThrown);),

У вас должно быть следующее:

error: function (xhr, textStatus, errorThrown) {
  alert(errorThrown);
},

Во-вторых, обновление вашей сетки находится за пределами функции успеха вызова ajax.Поскольку этот вызов асинхронный, обновление сетки, скорее всего, будет запущено до завершения этого вызова.Переместите обновление в функцию обратного вызова, например:

success: function (response1, textStatus, jqXHR){
  ColdFusion.Grid.refresh('candidatesGrid', true);
  alert('success');
}

В-третьих, если содержимое cfdiv загружается асинхронно и элемент #candidatesubmit находится внутри этого динамически загружаемого содержимого, ваша функция будетне быть связанным с его click событием, потому что оно не будет присутствовать при запуске события ready на главной странице.

Поэтому вместо прямой привязки к элементу используйте стратегию делегирования, прослушивая событияна включающий элемент, который, как вы знаете, будет присутствовать при начальной загрузке страницы.Поэтому вместо этого:

$('#candidatesubmit').on('click', function () {

Попробуйте что-то вроде этого:

$('#some_outer_div').on('click','#candidatesubmit', function () {

#some_outer_div теперь будет прослушивать любые события щелчка, всплывающие из его дочерних элементов (даже те, которыене присутствовали при первой загрузке страницы).Если целью одного из этих кликов является #candidatesubmit, обработчик сработает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...