Jump to content

[Resolvido] Pedido AJAX sempre com o status 0


iron

Recommended Posts

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 by iron

Cumprimentos,
iron

Link to post
Share on other sites

Sim 0. Contudo eu não sei o porque.

309is7l.jpg

 

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 by iron

Cumprimentos,
iron

Link to post
Share on other sites

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 by iron
Inserção de um novo ponto

Cumprimentos,
iron

Link to post
Share on other sites

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 by iron

Cumprimentos,
iron

Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.