2013-02-26 5 views
1

Значения post не переходят на страницу действий. Страница действия возвращает только статический ответ, т. Е. Спасибо сообщение без части $ _POST.JQuery Post() не публикуется

Ниже приведены коды.

JQuery

<script> 
    $(function() { 
     $('#myF').submit(function (e) { 

      e.preventDefault(); 
      $('#contactForm').html('<img src="images/ajax_small.gif" />'); 
      subMe(); 
     }); 
    }); 

    function subMe() { 
     $.post('?action=contactdetails', $('#myF').serialize(), 
      function(data) { 
       $('#contactForm').html(data.returnValue); 
      }, "json"); 
    } 
</script> 

HTML

<form id="myF"> 
    <div id="contactForm" valign="top" style="width:417;text-align:center" class="main"> 
<table width="417" border="0" cellspacing="0" cellpadding="0"> 
       <tr> 
       <td width="45"><span class="style3">Name</span></td> 
       <td width="373" height="30"><input name="name" id="name" style="padding-left:5px" type="text" title="Name is required." class="required form" /></td> 
       </tr> 
       <tr> 
       <td height="14" colspan="2"><img src="images/spicer.gif" width="1" height="1" /></td> 
       </tr> 
       <tr> 
       <td><span class="style3">Email</span></td> 
       <td width="373" height="30"><input name="email" title="Please enter a valid email id." id="emailid" style="padding-left:5px" type="text" class="validate-email required form" /></td> 
       </tr> 
<tr colspan="2"> 
<input type="submit" value="Submit" /> 
</tr> 
      </table> 
</div> 
</form> 

Действие страница

<?php 
    if ($action == 'contactdetails') { 
     $data['layout'] = 'layout_blank.tpl.php'; 
      $nme = $_POST['name']; 
     echo json_encode(array("returnValue"=>"<strong>Thank you " . $nme . " for contacting us.<br /> We will get back to you soon.</strong>")); 
    } 
    ?> 

ответ

1

Ваши входы расположены в пределах <div id="contactForm"> элемента пока вы не вызовите эту строку:

$('#contactForm').html('<img src="images/ajax_small.gif" />'); 

, с которого они исчезают. Как только это произойдет, вызов .serialize() не вернет никаких значений, потому что нет никаких входов, которые будут найдены.

Вызов subMe() первый, а затем изменить содержание этого элемента <div>:

$(function() { 
    $('#myF').submit(function (e) { 
     e.preventDefault(); 
     subMe(); 
     $('#contactForm').html('<img src="images/ajax_small.gif" />'); 
    }); 
}); 
+0

Отлично! Благодарю. Принято. –

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