2015-10-12 12 views
5

Sto migrando il mio progetto da angularjs 1.3 beta a 1.4, '$ http get' funziona bene ma '$ post http' sta creando problemi. Di seguito è riportato il codice di autenticazione utente, che funziona bene in 1.3, ma non funziona in 1,4

factory.authenticate = function (email, password) { 
    var payload = { 
     email: email, 
     password: password 
    }; 
    var rid = Security.reqKey(); 
    payload['rid'] = rid; 
    return $http({ 
     method: 'POST', 
     url: Base_url +'service/auth', 
     param: { 
      rid: rid 
     }, 
     data: $.param(payload), 
     headers: {'Content-Type': 'application/x-www-form-urlencoded'} 
    }); 
}; 

Dopo la migrazione a 1,4 esso produrre errore:

POST http://localhost/ 405 (Not Allowed) XHR failed loading: POST

(che stava funzionando benissimo prima)

c'è un caso in cui questo codice fornisce il risultato desiderato. Se inserisco debugger nel browser chrome ed eseguo l'intero codice premendo f10.

+1

cos'è 'Sicurezza' e perché non viene iniettato? Sembra che questa funzione 'Security.reqKey()' sia asincrona e questo è il motivo per cui non è in tempo quando si esegue il codice senza debugger ed è in tempo quando si esegue il debug - è semplicemente la questione di un paio di millisecondi. – smnbbrv

+0

La sicurezza non è altro che una fabbrica lato client il cui valore è basato su Date.now(). ValueOf(); Non penso che questo stia creando problemi. Da quando ho provato questo codice senza parametro param. ma sta producendo lo stesso errore. :( –

+0

quindi è probabilmente un problema, che non si passa il parametro.Il tuo errore è comunque un tipo di server-side.Avete bisogno di un'occhiata lì prima qual è la fonte di un problema (anche se sono abbastanza sicuro questo perché non hai questo parametro rid). Non otterrai una soluzione qui se non pubblichi tutte le funzioni correlate incluse le cose sul lato server. – smnbbrv

risposta

0

Secondo il docs,

params – {Object.} – Map of strings or objects which will be serialized with the paramSerializer and appended as GET parameters.

param dovrebbe essere params e, pertanto, i dati non è essere serializzato, il che spiegherebbe perché il server sta rifiutando tuo post (dal posto richiede più privilegi rispetto GET presumibilmente).

Ma anche questo può essere errato, come penso che params sia solo per GET (ma forse funziona per entrambi).

Non è inoltre necessario jquery $.param() $ http ha un serializzatore incorporato. data può essere impostato su payload.

Problemi correlati