2014-10-28 3 views
1

Примечание: Я лично предпочитаю jQuery вместо $; это больше набирает текст, но я считаю его более читаемым.jQuery click handler не выполняет AJAX POST

У меня есть простая форма, которая позволяет пользователю вводить свои имена и фамилии и адрес электронной почты. Она имеет кнопку «Сохранить», то при нажатии выполняет:

jQuery('#saveButton').click(function() { 
    alert('About to Save to server'); 

    var validated = validateContact(); 
    if(!validated) { 
     alert('Did not validate!'); 
     return; 
    } else { 
     alert('Validated!'); 
    } 

    jQuery().ajax({ 
     url: "saveContact", 
     type:"post", 
     dataType: 'json', 
     data: { 
      contact: { 
       firstName: jQuery('#firstName').val(), 
       lastName: jQuery('#lastName').val(), 
       emailAddress: jQuery('#emailAddress').val() 
      } 
     }, 
     success: function(result) { 
      jQuery('#firstName').val(""); 
      jQuery('#lastName').val(""); 
      jQuery('#emailAddress').val(""); 
     }, 
     error: function(xhr){ 
      alert(xhr.responseText); 
     } 
    }); 

    alert('Saved to server'); 
}); 

Когда я нажимаю кнопку «Сохранить», я получаю несколько alert всплывающих окон, в том числе «ПРОВЕРЯЕМЫЕ!» но сценарий, похоже, вскоре умер, и я никогда не вижу предупреждения «Сохранено на сервер». Это говорит о том, что мой вызов jQuery/AJAX плохой. Кроме того, когда я открываю Инструменты для разработчиков браузера, я не вижу, как браузер делает POST для моей сети. В консоли я не вижу никаких ошибок. Любые идеи относительно того, где я ошибаюсь, и почему я даже не вижу активности в сети?

+2

JQuery -> JQuery плюс вы должны указать файл или контроллер тоже. –

+2

Я считаю, что вам нужно указать файл: url: «saveContact.php», например – Shaeldon

+0

Спасибо @ Dean.DePue (+1), но я не буду следовать за вами. Вы говорите, что мне нужно заменить 'jQuery' на' jquery-> jQuery'? Если да, то почему? Также я не думаю, что вы правы, потому что сам обработчик кликов выполняет и запускает сообщения 'alert' до определенной точки. – smeeb

ответ

1

После ошибки в коде:

  • Б JQuery вместо JQuery.
  • Используется jQuery() вместо jQuery при вызове метода ajax.

JS:

jQuery('#saveButton').click(function() { 
    alert('About to Save to server'); 

    var validated = true; //Changed to temporary value. 
    if (!validated) { 
     alert('Did not validate!'); 
     return; 
    } else { 
     alert('Validated!'); 
    } 

    jQuery.ajax({ //Replaced jQuery() with jQuery 
     url: "/saveContact", //Sample URL 
     type: "post", 
     dataType: 'json', 
     data: { 
      contact: { 
       firstName: jQuery('#firstName').val(), //Replaced jquery with jQuery 
       lastName: jQuery('#lastName').val(), //Replaced jquery with jQuery 
       emailAddress: jQuery('#emailAddress').val() //Replaced jquery with jQuery 
      } 
     }, 
     success: function (result) { 
      jQuery('#firstName').val(""); //Replaced jquery with jQuery 
      jQuery('#lastName').val(""); //Replaced jquery with jQuery 
      jQuery('#emailAddress').val(""); //Replaced jquery with jQuery 
     }, 
     error: function (xhr) { 
      alert(xhr.responseText); 
     } 
    }); 

    alert('Saved to server'); 
}); 

Демо: http://jsfiddle.net/lotusgodkk/x2mv94vm/6/

+0

Спасибо @K K (+1) - см. Мои обновления; изменение дела ничего не изменило для меня - скрипт все еще умирает в одном месте и на сервер не отправляется POST. – smeeb

+1

Возможно, это потому, что validateContact() возвращает false. Вы проверили? –

+0

Еще раз спасибо @K K (+1 еще раз) - да, я подтвердил, что 'validateContact' возвращает true (и я также получил всплывающее окно с подтверждением * * Validated! *", Чтобы проверить это). – smeeb

3

Replace jQuery().ajaxjQuery.ajax({...}) с

+0

Спасибо @Jibran Khan (+1) - см. Мои обновления; изменение дела не исправило это для меня.Сценарий все еще умирает в одном и том же месте, и HTTP-сообщение HTTP не отправляется на сервер ... любые идеи? – smeeb

+0

Не изменять только случай, но круглые скобки после jQuery() не должны включаться. –

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