2013-12-04 5 views
3

ok, поэтому я знаю, что этот ajax работает, но я не могу понять, почему он не отправляется сюда.ajax on submit no refresh form с помощью php

<script type="text/javascript"> 
$(function(){ 
    $('input[type=submit]').click(function(){ 
     $.ajax({ 
      type: "POST", 
      url: "postitem.php", 
      data: $("#myform").serialize(), 
      beforeSend: function(){ 
       $('#result').html('<img src="loading.gif" />'); 
      }, 
      success: function(data){ 
       $('#result').html(data); 
      } 
     }); 
    }); 
}); 

отправить форму

<form action="" method="post" onsubmit="return false;" id="myform"> 

кнопка отправки

<input type="hidden" value="Post" name="submit" /> 
<button type="submit" title="Done" style="height:33px; width:50px"> 
    <img src="../../css/images/plus_25.png" /> 
</button> 

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

+6

У вас нет 'input [type = submit]' в вашей форме. у вас есть 'button [type = submit]' и 'input [type = hidden]' – jszobody

+0

, поэтому просто измените ввод [type = sumbit] на кнопку [type = submit]? – Sickest

+0

'

ответ

6

Вы выбираете <input> вместо <button>. Я имел успех, изменив селектор JQuery из этого:

$('input[type=submit]') 

к этому:

$('button[type=submit]') 

http://jsfiddle.net/H3Bcc/

+0

благодарит брата, работал как шарм – Sickest

-1

попробовать это:

<script type="text/javascript"> 
$(function(){ 
    $('input[type=submit]').click(function(e){ 
e.preventDefault(); // prevent the browser's default action of submitting 
     $.ajax({ 
      type: "POST", 
      url: "postitem.php", 
      data: $("#myform").serialize(), 
      beforeSend: function(){ 
       $('#result').html('<img src="loading.gif" />'); 
      }, 
      success: function(data){ 
       $('#result').html(data); 
      } 
     }); 
    }); 
}); 
+1

wait , почему именно так? Я новичок в ajax – Sickest

+0

, это предотвратит отправку действий по умолчанию в браузере и будет использовать ajax для отправки вместо –

2

Не все браузеры интерпретируют click прикрепленную к кнопке отправки как отправке формы, чтобы вы эффективно просто нажав на эту кнопку.

Предотвращение отправки формы предпочтительно должны быть захвачены путем присоединения submit обработчика к <form>, когда у вас есть <input type="submit"> или <button type="submit>, так что это лучший способ, чтобы гарантировать успех:

JQuery

$(function(){ 
    $('#myform').on('submit', function(e){ 

     // prevent native form submission here 
     e.preventDefault(); 

     // now do whatever you want here 
     $.ajax({ 
      type: $(this).attr('method'), // <-- get method of form 
      url: $(this).attr('action'), // <-- get action of form 
      data: $(this).serialize(), // <-- serialize all fields into a string that is ready to be posted to your PHP file 
      beforeSend: function(){ 
       $('#result').html('<img src="loading.gif" />'); 
      }, 
      success: function(data){ 
       $('#result').html(data); 
      } 
     }); 
    }); 
}); 

HTML

<form action="postitem.php" method="POST" id="myform"> 
    <input type="hidden" value="Post" name="submit" /> 
    <button type="submit" title="Done" style="height:33px; width:50px"> 
     <img src="../../css/images/plus_25.png" /> 
    </button> 
</form> 
+0

Вы забыли скобки. 'e.preventDefault()' – 11684

+0

Согласен, это лучше. Но он не отвечает на конкретный вопрос OP о том, почему исходный код терпит неудачу. – showdev

+0

Можете ли вы показать мне, как код должен выглядеть с помощью e.preventdefault(); – Sickest