If you intend to send the form data, process and receive some feedback, then you should disable the button on the beforeSend and after receiving the return on success you must enable the button again, or you can redirect to another page. I believe the following code can help you.
jQuery(document).ready(function(){
jQuery("#send").click(function(event){
event.preventDefault();
codigo = jQuery('input[id="nome"]').val();//campo no form
jQuery.ajax({
url: 'teste_botao.php',
dataType: 'html',
data: {par01: codigo},
type: 'POST',
beforeSend: function(){
//jQuery('#insere-aqui').html(iconCarregando);
jQuery('#send').attr('disabled', 'disabled');//desabilito
},
complete: function(){
jQuery(iconCarregando).remove();
},
success: function(data, textStatus) {
jQuery('#insere-aqui').html('');
jQuery('#insere-aqui').html(data);
jQuery('#send').removeAttr('disabled');//habilito
},
error: function(xhr,er) {
jQuery('#insere-aqui').html('Error ' + xhr.status + ' - ' + xhr.statusText + '<br />Tipo de erro: ' + er +'')
}
});
});
});
EXAMPLE With serialize ()
<script type="text/javascript">
$(document).ready(function(){
var iconCarregando = $('<img src="../icon/mini.gif" class="icon" /> <span class="destaque">Carregando. Por favor aguarde...</span>');
$('#form_um').submit(function(e) {
e.preventDefault();
var serializeDados = $('#form_um').serialize();
$.ajax({
url: 'exemplo-serialize.php',
dataType: 'html',
type: 'POST',
data: serializeDados,
beforeSend: function(){
$('#insere_aqui').html(iconCarregando);
$('#send').attr('disabled', 'disabled');//desabilito
},
complete: function() {
$(iconCarregando).remove();
},
success: function(data, textStatus) {
$('#insere_aqui').html('<p>' + data + '</p>');
$('#send').removeAttr('disabled');//habilito
},
error: function(xhr,er) {
$('#mensagem_erro').html('<p class="destaque">Error ' + xhr.status + ' - ' + xhr.statusText + '<br />Tipo de erro: ' + er +'</p>')
}
});
});
})
</script>