Ajax + JQuery com 2 submits pro mesmo form

Bom dia,

Tenho um formulário com dois botões e preciso que ele seja enviado para caminhos diferentes de acordo com o botão que foi clicado, estou tentando usar ajax + jquery.
So que do modo que eu testei ate agora ele sempre se amarra no primeiro botão que eu clicar, mesmo se eu clicar no outro ele executa a função do primeiro botão clicado.
Segue o codigo:

<html>
<head>
	<script type="text/javascript" src="../jquery/js/jquery-1.8.3.js"></script>
	<script type="text/javascript" src="../jquery/js/jquery-ui-1.9.2.custom.min.js">
	</script><link type="text/css" href="../jquery/css/redmond/jquery-ui-1.9.2.custom.css" rel="stylesheet"/>
	<script type="text/javascript">	
	jQuery(document).ready(function(){				
		var requestRunning = false;
		
		$( "#enviar" ).button().click(function() {
			if (requestRunning) {
				return;
			}
						
			jQuery('#ajax_form').submit(function(){
				var dados = jQuery( this ).serialize();				
				var opt1 = {
					type: "POST",
					url: "processa.php",					
					cache: false,
					success: function(){						
						alert( "teste 1" );
					}
				};
				requestRunning = true;
				$.ajax(opt1);								
				return false;				
			});			
		});
			
		$( "#testar" ).button().click(function() {			
			if (requestRunning) {
				return;
			}
						
			jQuery('#ajax_form').submit(function(){
				var dados2 = jQuery( this ).serialize();					
				var opt2 = {
					type: "POST",
					url: "processa2.php",					
					cache: false,
					success: function(){						
						alert( "teste 2" );
					}
				};
				requestRunning = true;
				$.ajax(opt2);				
				return false;				
			});			
		});				
	});
	</script>
</head>
<body>
	<form method="post" action="" id="ajax_form">
		<label><input type="hidden" name="id" value="" /></label>
		<label>Nome: <input type="text" name="nome" value="" /></label>
		<label>Email: <input type="text" name="email" value="" /></label>
		<label>Telefone: <input type="text" name="telefone" value="" /></label>

		<label><input type="submit" name="enviar" value="Enviar" id="enviar" /></label>
		<label><input type="submit" name="enviar" value="Testar" id="testar" /></label>
	</form>
</body>
</html>

Se alguem puder me ajudar

coloca os botões fora do form

Os botões fora do form não resolverão o problema, pois ele continua sem saber qual botão foi clicado.

Não é ideal já que o certo é cada botão submit trabalhar para um formulário específico, mas se realmente precisa fazer os dois estarem no mesmo formulário, troque-os por button simples ao invés de submit e declare uma função em cada botão passando o id:

<label><input type="submit" name="enviar" value="Enviar" id="enviar" onclick="javascript:enviaForm(this.id);" /></label>  
<label><input type="submit" name="enviar" value="Testar" id="testar" onclick="javascript:enviaForm(this.id);" /></label>

Depois crie a função:

function enviaForm(idBotao) {
    var form = document.forms[0];
    if (idBotao == 'enviar') {
       form.action = "pagina_enviar.html";
    }
    if (idBotao == 'testar') {
        form.action = "pagina_testar.html";
    }
    form.submit(); // vai enviar para o action modificado nos if's.    
}

Como disse anteriormente, não é o ideal, mas é uma solução viável.

Outra coisa, se você usa ajax, mais um motivo para não utilizar submit, pois a página não precisa ser recarregada correto?

O exemplo que fiz usa javascript puro, mas se usar a mesma lógica, pode colocar diretamente no jQuery, basta apenas mudar os botões.

Espero ter ajudado.

Olá amigos,

Através das dicas e com o plugin JqueryForm (http://www.malsup.com/jquery/form/#html), consegui chegar no resultado conforme o link abaixo.

http://www.wlocation.com/testes/

Meu problema agora é com as div #status, quando o registro inserido com sucesso no banco de dados, é retornado a mensagem de “Reservado” apenas na célula do dia 1/mesa 1.

Via Jquery é ocultado a div=#escrever e exibido a div=#status.

Como eu poderia fazer dezenas de submits cada um com uma div correspondente, ou ontra forma de retorna a mensagem de “reservado” para cada célula?

Pensei em trabalhar com Array ou o método fieldValue, mas não consegui a solução.

Por favor ajude-me.

Desde já agradeço

Abaixo código do link:

Link para download do código-fonte:
https://mega.co.nz/#!XR1TzQjT!4zlB3ezFUcqEj1hQsl89P2JxGak3Gt5cZLDr9VwEIWQ

Código PHP:
envia.php

[code]<?php

// Informações para conexão
$host = "localhost";
$usuario = "root";
$senha = "";
$banco = "test";

// Realizando conexão e selecioando banco de dados
$conn = mysql_connect($host, $usuario, $senha) or die(mysql_error());
$db = mysql_select_db($banco, $conn) or die(mysql_error()); 
mysql_set_charset('utf8');


// Recuperamos os valores dos campos através do método POST
$id_cliente = $_POST["id_cliente"];
$id_mesa = $_POST["id_mesa"];
$dia = $_POST["dia"];

// Verifica se o nome foi preenchido
if (empty($id_cliente)) {
	echo "Entre com o cliente";
} 

// Verifica se a mensagem foi digitada
elseif (empty($id_mesa)) {
	echo "Entre com a mesa";
} 
// Verifica se a mensagem nao ultrapassa o limite de caracteres
elseif (empty($dia)) {
	echo "Entre com o dia";
} 
// Se não houver nenhum erro
else {
	// Inserimos no banco de dados
	$query = mysql_query("INSERT INTO mesa VALUES ('', '".$id_cliente."', '".$id_mesa."', '".$dia."')");
	
	// Se inserido com sucesso
	if ($query) {
		echo false;
	} 
	
	// Se houver algum erro ao inserir
	else {
		echo "Erro ao inserir o registro";
	}
}
?>

Código HTML/Java Script:
index.php

[code]

Envio de formulário sem refresh com JQuery/PHP

#status {
display: none;
}

  Dia 1 Dia 2
Mesa 1
</td>
<td>
</td>
Mesa 2
</td>
<td>
</td>
[/code]