Ajax usando JQuery

4 respostas
caiomacedor

Boa noite a todos.
Aos conhecedores do famoso Jquery, Comecei a usar o JQuery, e estou a principio adorando “Muito Show”, porém estou tendo dificuldade em usar os recursos ajax dele.
Estou tentando enviar um formulário para uma action do struts dois, ele chega na action, mas faltando alguns atributos, aparentemente os atributos que não é do tipo String:
abaixo esta o codigo da chamada, se alguem que manja ai poder me ajudar fico muito grato:

$(document).ready(function(){
	var form = $('#my_form').serialize();
	$('#botao_submit').click(function(){
		$.ajax({
			url: 'algumaCoisa.action',
			data: form,
			success: function(response, status){
				$('#div_que_recebe_response').html(response);
			}
		});
	});
});

4 Respostas

paulo1911

Olá amigo, verifique se todos os atributos possuem set e get e tambem se nao tem nehum atributo de ipo primitivo, se tiver tipo int id ou double id etc… troque por Integer id e Double id etc…

Falow

caiomacedor

Paulo boa noite, acho que estou tendo problema nesse formulario porque ele tem um upload de arquivo:
segue meu bean:

public class Pessoa implements Serializable {
	private static final long serialVersionUID = -4759737454510690725L;
	
	private Long id;
	private String nome;
	private String sexo;
	private Date dtNascimento;
	private String email;
	private Integer idade;
	private File foto;
	private String fotoFileName;
	private String fotoContentType;
	
	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public String getSexo() {
		return sexo;
	}
	public void setSexo(String sexo) {
		this.sexo = sexo;
	}
	public Date getDtNascimento() {
		return dtNascimento;
	}
	public void setDtNascimento(Date dtNascimento) {
		this.dtNascimento = dtNascimento;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public Integer getIdade() {
		return idade;
	}
	public void setIdade(Integer idade) {
		this.idade = idade;
	}
	public File getFoto() {
		return foto;
	}
	public void setFoto(File foto) {
		this.foto = foto;
	}
	public String getFotoFileName() {
		return fotoFileName;
	}
	public void setFotoFileName(String fotoFileName) {
		this.fotoFileName = fotoFileName;
	}
	public String getFotoContentType() {
		return fotoContentType;
	}
	public void setFotoContentType(String fotoContentType) {
		this.fotoContentType = fotoContentType;
	}
	
}
Action:
public class PessoaAction  extends ActionSupport {
	private static final long serialVersionUID = -9117971513771792308L;
	
	private Pessoa pessoa;
	
	public String execute() throws Exception {
		
		return SUCCESS;
	}
	
	
	public String create() {

		return SUCCESS;
	}

	
	public Pessoa getPessoa() {
		return pessoa;
	}
	public void setPessoa(Pessoa pessoa) {
		this.pessoa = pessoa;
	}
}
arquivo.js
$(document).ready(function(){
	$('#botao_salvar').click(function(){
		var form = $('#my_form').serialize();
		alert(form);
		
		$.ajax({
			url: 'pessoa!create.action',
			data: form,
			success: function(response, status){
				$('.divRetorno').html(response);
			}
		});
	});
});

Descobri mas um problema, se alguma String, nome da pessoa por exemple conter acentos, ele aparece deformado:
Olha um exemplo desse alert:
[code]pessoa.nome=Presidente+Jo%C3%A3o+Gulade&pessoa.sexo=Masculino&pessoa.dtNascimento=12%2F02%2F1940&pessoa.email=presidente%40gmail.com&pessoa.idade=999

Notem que o atributo File foto nem aparece nos parametros do form.
Alguem ai pode me ajudar?

paulo1911

Poste o código html do form, vc colocou o content type do form ?
fallow

caiomacedor

jsp de do form:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags"  prefix="s" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>Cadastro de Pessoa</title>
		<script src="${pageContext.request.contextPath}/script/jquery-1.6.js" type="text/javascript"></script>
		<script src="${pageContext.request.contextPath}/script/ajax.js" type="text/javascript"></script>
	</head>
	
	<body>
		<fieldset>
			<legend>Cadastro de Pessoa com AJAX</legend>
			<s:form action="cadastroPessoa" id="my_form" enctype="multipart/form-data" >
				<table border="0" width="500px" cellpadding="5" cellspacing="10">
					<tr>
						<td>Nome:</td>
						<td><s:textfield name="pessoa.nome" cssStyle="width: 98%" /></td>
					</tr>			
					<tr>
						<td>Sexo:</td>
						<td><s:textfield name="pessoa.sexo" /></td>
					</tr>			
					<tr>
						<td>Data Nascimento:</td>
						<td><s:textfield name="pessoa.dtNascimento" /></td>
					</tr>			
					<tr>
						<td>Email:</td>
						<td><s:textfield name="pessoa.email" cssStyle="width: 98%"  /></td>
					</tr>			
					<tr>
						<td>Idade:</td>
						<td><s:textfield name="pessoa.idade" /></td>
					</tr>			
					<tr>
						<td >Foto:</td>
						<td><s:file name="pessoa.foto" /></td>
					</tr>			
					<tr>
						<td>&nbsp;</td>
						<td><input type="button" value="Salvar" id="botao_salvar" /></td>
					</tr>			
				</table>
			</s:form>
		</fieldset>
	</body>
</html>
Criado 28 de junho de 2011
Ultima resposta 28 de jun. de 2011
Respostas 4
Participantes 2