iron Posted December 28, 2016 at 01:18 AM Report Share #601535 Posted December 28, 2016 at 01:18 AM (edited) Boas. Estou aqui com um pequeno problema. O meu pedido ajax retorna sempre status 0. No lado do servidor é feito aquilo que quero, contudo não consigo entender o meu erro para que ele me dê sempre o status 0. function addPlaylist(path) { const allPlaylists = document.getElementById('allPlaylists') const form = document.getElementById('newplaylist') path = path + '?' + form.name + '=' + form.value loadXMLDoc('post', path, (erro, data) => { if(data) alert(data) }) } function loadXMLDoc(method, path, cb) { var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == XMLHttpRequest.DONE ) { if (xmlhttp.status == 200) { cb(null, xmlhttp.responseText) } else if (xmlhttp.status == 400) { alert('There was an error 400') cb() } else { alert('something else other than 200 was returned'); cb() } } }; xmlhttp.open(method, path, true); xmlhttp.send(); } E o lado do servidor retorna isto: ... let obj = {} obj.layout = false obj.name = req.query.newplaylist.trim() obj.user = {} obj.user.username = req.user.username res.render('addPlaylist', obj) ficheiro addPlaylist: <tr id="{{name}}"> <td><a href="/spotify/playlists/{{user.username}}/{{name}}">{{name}}</a></td> <td> <form action="/{{user.username}}/remove/{{name}}" method="post"> <input class="btn btn-default btn-xs" type="submit" value="Remove"> </form> </td> <td align="left"> <form action="/{{user.username}}/update/{{name}}" method="post"> <input type="text" name="newname"> <input class="btn btn-default btn-xs" type="submit" value="Update"> </form> </td> </tr> Desde já obrigado. Edited December 28, 2016 at 06:20 PM by iron Cumprimentos, iron Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted December 28, 2016 at 09:52 AM Report Share #601536 Posted December 28, 2016 at 09:52 AM o que queres dizer com "status 0" ? é que esse "status" não existe na lista de valores associada a um HTTP request ... IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
iron Posted December 28, 2016 at 01:18 PM Author Report Share #601540 Posted December 28, 2016 at 01:18 PM (edited) Sim 0. Contudo eu não sei o porque. Eu andei à pesquisa e a maior parte das vezes o que diziam era que o pedido era cancelado. Mas não percebo o porque. Edited December 28, 2016 at 01:20 PM by iron Cumprimentos, iron Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted December 28, 2016 at 03:06 PM Report Share #601542 Posted December 28, 2016 at 03:06 PM epa ... isso nao quer dizer nada ... a mudança de estado não quer dizer que tenhas recebido a resposta (ainda) ... continua a execução IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
iron Posted December 28, 2016 at 03:27 PM Author Report Share #601546 Posted December 28, 2016 at 03:27 PM (edited) Mas quando vejo o status, já tenho de ter uma resposta. Pois estou a dizer que o pedido é async. Mas ele nunca retorna dados. Ou eu estou a pensar mal e fazer isto mal. Também sou novo nas andanças do ajax P.S: eu corri em debug. Ele vai ao servidor, faz o que tem a fazer é retorna uma resposta de um novo nó para adicionar à minha árvore no html. O problema deve estar no pedido ou no retorno do meu servidor. Mas não consigo perceber onde estou a fazer algo mal Edited December 28, 2016 at 03:31 PM by iron Inserção de um novo ponto Cumprimentos, iron Link to comment Share on other sites More sharing options...
Solution iron Posted December 28, 2016 at 06:19 PM Author Solution Report Share #601552 Posted December 28, 2016 at 06:19 PM (edited) Já consegui. Faltava-me um "return false" quando faço o "onsubmit". Obrigado P.S: Deveria ter colocado onde era feita a chamada ao método: <form onsubmit='addPlaylist("/{{user.username}}/newplaylist")'> <label>New playlist</label> <input type="text" name="newplaylist" id="newplaylist"/> <input class="btn btn-default btn-xs" type="submit" value="Add"/> </form> a correcção foi só adicionar o returna false: <form onsubmit='addPlaylist("/{{user.username}}/newplaylist"); return false'> <label>New playlist</label> <input type="text" name="newplaylist" id="newplaylist"/> <input class="btn btn-default btn-xs" type="submit" value="Add"/> </form> Edited December 28, 2016 at 06:29 PM by iron Cumprimentos, iron Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now