2012-12-23 10 views
5

ho Ajax una richiesta GET a lato client:bodyParser del espresso nodo non può ottenere il parametro nella richiesta GET

$.ajax({ 
     url: '/update',    
     type: 'get',  
     data: { 
      "key": key, 
      "value": value 
     }, 
     success: function (data, err) { 

     } 
    }) 

poi a lato del nodo, voglio ottenere il parametro

var showParam = function (req, res) { 
    if (req.body) { 
     for (var key in req.body) { 
      console.log(key + ": " + req.body[key]); 
     }  
     res.send({status:'ok',message:'data received'}); 
    } else { 
     console.log("nothing received"); 
     res.send({status:'nok',message:'no Tweet received'}); 
    } 
} 
app.get('/update', function(req, res){ 
    showParam(req, res); 
}) 

La shell mostra che il corpo è vuoto e non definito.

Ma quando cambio lo get in post (sia lato client che lato server), tutto è ok, posso ottenere il parametro correttamente.

Qual è il problema con il mio codice? Mi manca qualcosa?

risposta

9

Se si sta emettendo una richiesta GET, i parametri URL non fanno parte del corpo e quindi non verranno analizzati dal middleware bodyParser.

Per accedere ai parametri di query, semplicemente riferimento req.query

1

Per ottenere parametri da bodyParser è necessario utilizzare POST non GET. La richiesta ajax e le chiamate al server devono entrambi utilizzare POST.

http://expressjs.com/api.html#req.body

app.post('/update', function(req, res){ 
    showParam(req, res); 
}); 

$.ajax({ 
     url: '/update',    
     type: 'POST',  
     data: { 
      "key": key, 
      "value": value 
     }, 
     success: function (data, err) { 

     } 
    }); 

per ottenere il GET params, utilizzare il modulo url e utilizzare query = url.parse(req.url, true).query. query conterrà un oggetto con i valori accessibili tramite query.foo

+0

Quindi, se voglio ottenere parametro da ottenere richiesta sul lato server, cosa devo fare? – hh54188

+1

Vedere la mia modifica per informazioni sulla query. – Trevor

+0

Grazie mille, ma mi chiedo perché il 'bodyParser' non possa solo analizzare il parametro get? Penso che se potesse fare questo lavoro, potrebbe essere meglio – hh54188

0

È possibile accedere ai dati per la richiesta di entrare in lato server utilizzando req.query.key e req.query.value.

Problemi correlati