Boa noite pessoas.
Estou com um problema meio complicado, não consigo entender.
Estou fazendo requisições via Ajax, porém, quando tenho a resposta e analiso o array recebido via JSON, este é analisado como indefinido.
Tenho 3 métodos identicos. Um para listar marcas de tênis, outro para listar materiais de tênis e outro para listar os tamanhos. Somente os tamanhos são executados com sucesso.
Já testei pra ver se o JSON está vindo com valor null, mas não está. Está sendo retornado igual o de listar tamanhos.
Os erros ocorrem nos métodos listBrand() e listMaterial(). valIndex[i] is undefined:
list += "<option value='" + valIndex[i].id + "'>"
+ valIndex[i].material + "</option>";
Arquivo JS completo
Executo o método showCreateTennis():
[code]
function CreateTennis(){
this.brand = "#brand.tennis";
this.size = "#size.tennis";
this.material = "#material.tennis";
this.createTennis = function(){
cProduct = new CreateProduct();
cTennis = new CreateTennis();
util = new Util();
var form =
"CreateTennisAction?"
+"tennis.name=" + $(cProduct.name).val()
+"&tennis.weight=" + $(cProduct.weight).val()
+"&tennis.height=" + $(cProduct.height).val()
+"&tennis.width=" + $(cProduct.width).val()
+"&tennis.length=" + $(cProduct.length).val()
+"&tennis.diameter=" + $(cProduct.diameter).val()
+"&tennis.price=" + $(cProduct.price).val()
+"&tennis.description=" + $(cProduct.description).val()
+"&idBrand=" + $(cTennis.brand).val()
+"&idSize=" + $(cTennis.size).val()
+"&idMaterial=" + $(cTennis.material).val();
util.ajaxRequest(form, true);
}
this.showCreateTennis = function(){
cTennis = new CreateTennis();
cTennis.listBrand();
cTennis.listMaterial();
cTennis.listSize();
$('#createTennis.window').show();
}
this.listBrand = function(){
var keyIndex, valIndex = [];
var list = "<select id='brand' class='tennis'>";
$.ajax($.getJSON("ListBrandAction", function(response){
$.each(response, function(key, val){
keyIndex = key;
valIndex = val;
for(var i = 0; i < keyIndex.length -1; i++){
list += "<option value='" + valIndex[i].id + "'>" + valIndex[i].brand + "</option>";
}
list += "</select>";
alert(list);
$('#brand.tennis').replaceWith(list);
});
}));
}
this.listSize = function(){
var keyIndex, valIndex = [];
var list = "<select id='size' class='tennis'>";
$.ajax($.getJSON("ListSizeAction", function(response){
$.each(response, function(key, val){
keyIndex = key;
valIndex = val;
for(var i = 0; i < keyIndex.length -1; i++){
list +=
"<option value='" + valIndex[i].id + "'>" + valIndex[i].size + "</option>";
}
list += "</select>";
alert(list);
$('#size.tennis').replaceWith(list);
});
}));
}
this.listMaterial = function(){
var keyIndex, valIndex = [];
var list = "<select id='material' class='tennis'>";
$.ajax($.getJSON("ListMaterialAction", function(response){
$.each(response, function(key, val){
keyIndex = key;
valIndex = val;
for(var i = 0; i < keyIndex.length -1; i++){
list +=
"<option value='" + valIndex[i].id + "'>" + valIndex[i].material + "</option>";
}
list += "</select>";
alert(list);
$('#material.tennis').replaceWith(list);
});
}));
}
}[/code]
Se aguém puder me ajudar, ficarei muito grato.