2013-02-10 3 views
0

упрощенная версия моего кода:Форма JQuery не отправляет?

JS:

$(function() { 
    $("submit").click(function() { 
     var msg_to = $("#msg_to").val(); 

     var dataString = 'msg_to=' + msg_to; 

     $.ajax({ 
      type: "POST", 
      url: "sendmessage.php", 
      data: dataString, 
      success: function(){ 
       $('.success').fadeIn(200).show(); 
       $('.error').fadeOut(200).hide(); 
      } 
     }); 

     return false; 
    }); 
}); 

HTML

<form method="post" name="form"> 
      <label class="label-left" for="msg_to">Message to</label> 
      <input name="msg_to" id="msg_to" type="text"> 
<input type="submit" value="" class="submit" /> 

РНР файл почты формы на мою электронную почту, и это работает точно, когда я просто отправьте форму в файл PHP. Через jquery это просто не сработает. Может ли кто-нибудь найти ошибку в моем коде?

+0

Почему это помечено 'php'? Это проблема js. – arkascha

ответ

4
$("submit") 

должно быть:

$(".submit") 

Первые выглядит для <submit> тега.

+0

Да, я уже пробовал это, но безуспешно –

3

Попробуйте это:

$(document).ready(function() { // use document query selector then test for ready state 
    $(".submit").click(function() { // submit query selector should have class "." 
     var msg_to = $("#msg_to").val(); 
     var dataString = "msg_to=" + msg_to; 

     $.ajax({ 
      type: "POST", 
      url: "sendmessage.php", 
      data: dataString, 
      success: function() { 
       $(".success").fadeIn(200); // no need for show() 
       $(".error").fadeOut(200); // no need for hide() 
      } 
     }); 

     return false; 

    }); 
}); 
+0

Изменения в вашем первом комментарии не нужны. '$ ()' такой же, как '$ (document) .ready ()'. – Barmar

+0

Да, но имейте в виду, что jQuery сказал, что '$ (function() {})' is * okay *, но не рекомендуется. Лучше использовать '$ (document) .ready (function() {});' –

0

Я думаю, что ваша форма представляет, прежде чем запрос AJAX может быть сделано. Использование функции event.preventDefault() предотвращает отправку формы, поэтому запрос AJAX может завершить загрузку.

$(function() { 
    $(".submit").click(function(event) { // Added the '.' for the class, and the event parameter 
     event.preventDefault(); // This prevents the submit-event to be fired 
     var msg_to = $("#msg_to").val(); 

     var dataString = 'msg_to=' + msg_to; 

     $.ajax({ 
      type: "POST", 
      url: "sendmessage.php", 
      data: dataString, 
      success: function(){ 
       $('.success').fadeIn(200).show(); 
       $('.error').fadeOut(200).hide(); 
      } 
     }); 

     return false; 
    }); 
}); 
0

Это работает! Это была комбинация решения @Vulcan и @Jacedc, и я ошибся в импорте jquery ПОСЛЕ сценария выше.

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