Boa tarde a todos,
pessoal, eu estou com um problema , não consigo recuperar um array do servlet para a view … alguem poderia me ajudar?? muito Obrigado![color=darkred] [/color]
Primeiramente , o Servlet(GET) - (recupero um id da view, e com ele , na chamada de um metodo , varro os arquivos de uma classe… depois os armazeno em um json e depois num JsonArray,
O PROBLEMA É QUANDO TENTO RESGATAR OS DADOS USANDO O METODO $.getJSON()…)
É PASSADO O SEGUINTE ERRO... (NA PAGINA)
“NetworkError: 404 Not Found - http://localhost:8080/uploader1/..js/jquery-1.9.1-min.js” jquery…-min.js
“NetworkError: 404 Not Found - http://localhost:8080/uploader1/..js/jquery-1.9.1-min.js” jquery…-min.js
O método getAttributeNode() não deve mais ser usado. No lugar, use getAttribute().
[Parar neste erro]
…ute(i),“string”==typeof r){try{r=“true”===r?!0:“false”===r?!1:“null”===r?null:+r…
jquery…-min.js (linha 3)
ReferenceError: JsonAndAjax is not defined
[color=red][b]
[/color][/b]
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
//Recuperar o Nome da pasta de um parametro da queryString
PrintWriter out = resp.getWriter();
try {
String requestId = req.getParameter("requestId");
UploadDir upDir = new UploadDir(requestId, false);
ArrayList<File> listaFile = upDir.getFiles();
resp.setContentType("application/json;charset=UTF-8");
JSONArray jarr = new JSONArray();
for(File f : listaFile){
JSONObject job = new JSONObject();
job.put("Nome :", f.getName());
job.put("Size :" ,f.getTotalSpace());
job.put("Content type:", "jpg");
job.put("url:", "INCLUIR_URL_CORRETA");
jarr.put(job);
}
// out.println(jarr.toString());
// req.setAttribute("msg", jarr.toJSONObject(jarr));
// req.getRequestDispatcher("jqueryui.html").forward(req, resp);
} catch (UploadException e) {
e.printStackTrace();
out.println("{'error':"+e.toJson()+"}");
}
//recuperar list de File
catch (JSONException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
Primeiramente, Bem Vindo ao Guj! Segundo, quando for colocar os códigos coloque dentro do [ code] [/ code] “Só clicar no botão Code”
Quanto a sua pergunta, parece que ele não está encontrando o arquivo do jquery, voce esta utilizando algum tutorial para fazer esse sistema?
Obrigado ! Agora , quanto ao projeto , não estou utilizando nenhum tutorial , só pesquisando na web mesmo…
E quanto ao erro do console , também achei a mesma coisa quando vi, o estranho é que ele chegou a funcionar uma vez, o que é muito esquisito!
Realmente estranho ter funcionado 1x, mostra os imports que vc está usando e a url que vc está usando para acessar o index do projeto!
Então , acertei alguns lances e descobri que o que não estou conseguindo é acessar o servlet para buscar os dados de um JSON…
* mensagem de erro pelo firebug...
[color=red]NetworkError: 404 Not Found - http://localhost:8080/dupload?requestId=teste[/color]
function JsonAndAjax() {
$.getJSON("/dupload?requestId="+requestId, {} ,function(jarr){ // ele não aceita esse caminho do Servlet ... teria outra forma de acessa-lo?
itemsHtml = '<table>';
for (var i = 0; i < jarr.length; i++) {
itemsHtml += '<tr>';
itemsHtml += '<td>' + jarr[i] + '</td>';
itemsHtml += '<td>' + jarr[i] + '</td>';
itemsHtml += '<td>' + jarr[i] + '</td>';
itemsHtml += '</tr>';
}
itemsHtml += '</table>';
$('#items').html(itemsHtml);
});
}
Obrigado pela ajuda!
Bom, geralmente vc precisa colocar o nome do projeto, depois do localhost e depois a sua requisição!! Digamos que o seu projeto fosse Upload normalmente na url ficaria assim: http://localhost:8080/Upload/dupload?requestId=teste!!
Poxa , muito obrigado! Ele já está fazendo a integração com o Servlet… Mas, infelismente ainda não está conseguindo varrer o JsonArray… 
Só pra esclarecer... Esse function(jarr) busca o objeto Json lá do Servlet ? estou certo??
Enfim , fiz o teste e testifiquei que ele estapassando pelo alert(ok) e tambem está encontrando o servlet..
Já o alert(itemsHtml) já não está passando....
Acho que o problema está quando tento varrer este array...
[code]function JsonAndAjax() {
alert("ok");
$.getJSON("http://localhost:8080/uploader0/dupload?requestId="+requestId , {} ,function(jarr){ // acho que está estorando no function(jarr)...
itemsHtml = '<table>';
alert(itemsHtml);
for (var i = 0; i < jarr.length; i++) {
itemsHtml += '<tr>';
itemsHtml += '<td>' + jarr[i].Nome + '</td>';
itemsHtml += '<td>' + jarr[i].Size + '</td>';
itemsHtml += '<td>' + jarr[i].Contenttype + '</td>';
itemsHtml += '<td>' + jarr[i].url + '</td>';
itemsHtml += '</tr>';
}
itemsHtml += '</table>';
alert(itemsHtml);
$('#items').html(itemsHtml);
});
} [/code]
[code] @Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
PrintWriter out = resp.getWriter();
try {
String requestId = req.getParameter("requestId");
UploadDir upDir = new UploadDir(requestId, false);
ArrayList<File> listaFile = upDir.getFiles();
resp.setContentType("application/json;charset=UTF-8");
JSONArray jarr = new JSONArray();
for(File f : listaFile){
JSONObject job = new JSONObject();
job.put("Nome", f.getName());
job.put("Size" ,f.getTotalSpace());
job.put("Contenttype", "jpg");
job.put("url", "INCLUIR_URL_CORRETA");
jarr.put(job);
}
//out.println(jarr.get(0));
} catch (UploadException e) {
e.printStackTrace();
out.println("{'error':"+e.toJson()+"}");
}
//recuperar list de File
catch (JSONException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}[/code]
Vamos lá!
-
Você sabe utilizar as ferramentas de desenvoledor Web dos brownser? Para o firefox tem o Firebug, para o chrome tem o Webkit e o IE tem o seu próprio kit, para vc utilizar é só vc apertar F12 em qualquer um dos brownsers.
-
Me parece que vc está utilizando o Jquery, só para ter certeza coloca os imports das páginas que vc está utilizando (Caso seja JQuery mesmo você pode ir no site deles para obter o método de funcionamento das funções implementadas por eles):
Download JQuery: http://jquery.com/
Documentação: http://api.jquery.com/
Documentação JQuery.getJson: http://api.jquery.com/jQuery.getJSON/
A única coisa é que está tudo em inglês, mas nada que um translate não resolva!! mais abaixo eu posso te mostrar um exemplo de getJson!!!
-
Você me disse que ele está passando pelo alert da function, beleza, mas você precisa saber 2 coisas antes de testar o Json, caso esteja com dúvidas em relação a url posta o web.xml
I- O JSon está sendo gerado de forma correta?
Neste caso, coloque um println para saber como ele está gerando o JSon
II- O JSon está sendo fornecido para a view?
Acesse a url que está fornecendo o JSon, ele deve gerar um texto com o JSon criado ou um arquivo para baixar com o JSon criado
-
Caso não tenha certeza se a function está realmente acessando o servlet correto, debugue seu servlet, caso tenha dúvidas se ele está fazendo a requisição certo debugue o script (O firebug e o Webkit conseguem debugar o script que vc criou)
Exemplo de Json
minha url: http://localhost:8080/Portal2/mensagens.json
Metodo: Get
Tipo de Dado: JSON
resposta da url:
[
{"mensagem":"Teste1"},
{"mensagem":"Teste2"},
{"mensagem":"Teste3"},
{"mensagem":"Teste4"}
]
Via Ajax
var mensagens='';
$.ajax({
url:'mensagens.json', //URL que gera o JSon
cache: false, //Opcao para armazenar o Json no computador remoto (default true)
method: 'GET', //Metodo HTTP utilizado da url
dataType: 'JSON', //Tipo de dado fornecido pela url
async: false, //Sincronia da requisição com o restante do código
success: function(data){ //Caso tenha sucesso na resposta da requisicao
mensagens = $.map(data, function(element, index){
return element.mensagem + ' / ';
});
}
});
alert(mensagens); //Este alert vai gerar isto: "Teste1 / Teste2 / Teste3 / Teste4"
Via getJson (Este é apenas um atalho do $.ajax)
var mensagens='';
$.getJSON('mensagens.json', {requisicao: 'requisicao'}).done(function(data){
mensagens = $.map(data, function(el, val){
return el.mensagem+' / '
});
});
alert(mensagens); //Este alert vai gerar isto: "Teste1 / Teste2 / Teste3 / Teste4"
Mickdark , muito obrigado pela ajuda, eu consegui resolver. sou programador JAVA,
sem nenhuma vivencia até então com javascript/jquery…
Mas é assim que se aprende né? rs. O problema estava na chamada da function(data)
com os objetos do JsonArray, e mais uma pancada de erros bobos de tags e nas functions()…
Quanto a ferramenta debug pra browser eu já uso o firebug.
Muito obrigado mesmo. Vida longa e próspera!
Tranquilo jlsilva, pra vc tambem ^^!!