Com o código abaixo eu consigo recuperar todos os campos tipo text, textarea,..., porém, o campo do tipo file ele não retorna, já tentei vários métodos mas não consegui.
$('form#agenda').live('submit',function(e){
e.preventDefault();
var action = $(this);
//Apenas para mostrar no console os retornos do envio
console.log(action.serialize());
$.ajax({
url: action.attr("action"),
type: 'post',
data: action.serialize(),//serializeArray() é melhor para ser debugado, mas tem o mesmo resultado
success: function( response ){
var data = $( '<div>'+response+'</div>' ).find('#conteudo').html();
conteudo.html(data);
}
});
});
O formulário é esse:
<form method="post" id="agenda" action="?pag=agenda.php&fazer=adicionar" enctype="multipart/form-data">
<input type="hidden" name="acao" id="acao" value="Adicionar">
Título:
<input type="text" name="titulo" id="titulo" size="60" value="Titulo">
Data:
<input type="text" name="data" id="data" size="11" maxlength="10" value="<?php echo $data;?>"><br>
URL: <input type="text" name="url" id="url" size="60" value="http://localhost/admin/agenda/"><br>
Foto: <br><input name="foto" id="foto" type="file" value="" /> <br><!---->
Descrição: <br>
<textarea name="descricao" cols="74" rows="10">Minha Descrição aqui</textarea><br>
<input type="submit" value="Adicionar" />
</form>
A página php que pega esses valores tá normal, pois se o form não for enviado via $.ajax() ele captura todos os campos sem problema.
Como eu disse é só o campo (<input name="foto" id="foto" type="file" value="" />) que o $.ajax() não está serializando corretamente com o serialize(), com o console.log(action.serialize()) se pode verificar.
Alguma idéia de como retornar esse campo do tipo file pelo $.ajax()?
Obrigado pela atenção.