2013-04-30 2 views
0

Я использовал $.get успешно в прошлом, но не могу заставить его работать внутри события отправки jQuery. Согласно документации jQuery, событие submit перехватывает событие отправки формы и предотвращает действие формы HTML, пока вы возвращаете false. Я проверил это. В приведенном ниже коде я использую $.get дважды (один раз перед обработчиком события, а затем внутри него). Он отлично работает в первом случае, но не проходит внутри события отправки.jQuery.get не работает внутри jQuery отправить событие

код test.php:

<?php 
$handle = $_GET['handle']; 
echo($handle); 
?> 

client.php код:

<div> 
<form id="message_box_form" style="height:100px;width:300px" method="get" action="../phpDB/test.php"> 
    <textarea id="message_box" style="height:30px;width:250px;" type="text" name="messagecontent"></textarea> 
    <input id="share_button" name="share_button" type="submit" value="Share" />  
</form> 
</div> 

<script type="text/javascript"> 
jQuery(document).ready(function($) { 

    $.get("../phpDB/test.php",{handle:'nightstalker'}, function(data){    
     alert(data); // This works fine 
    }); 

    $('#message_box_form').submit(function() { 
     alert('jQuery submit handler called'); //This happens 
     $.get("../phpDB/test.php",{handle:'rodbender'}, function(data){ 
      alert(data); // This NEVER happens 
      return false; 
     }); 
    }); 
}); 
</script> 

ответ

2

Ваш return false; в неправильном месте:

$('#message_box_form').submit(function() { 
    alert('jQuery submit handler called'); //This happens 
    $.get("../phpDB/test.php",{handle:'rodbender'}, function(data){ 
     alert(data);  
    }); 
    return false; // should in the callback of submit. 
}); 

Или вы могли бы использовать e.preventDefault();:

$('#message_box_form').submit(function(e) { 
    e.preventDefault(); 
    alert('jQuery submit handler called'); //This happens 
    $.get("../phpDB/test.php",{handle:'rodbender'}, function(data){ 
     alert(data);  
    }); 
}); 
Смежные вопросы