2009-11-08 4 views
2
$.ajax({ 
    type: 'POST', 
    url: 'place/add', 
    data: { 
     lat: lat, 
     lng: lng, 
     name: name, 
     address: address, 
     phone: phone, 
     review: review, 
     category: category 
    }, 
    success: function(data) { 
    alert(data); 
    alert(data.id); 
    // ...... 
}); 

La première alerte donne: { "id": "2", "succès": true}réponse AJAX Debugging jQuery: ce que je fais mal

mais le second: non défini

Répondre

11

Vous devez spécifier le type de données renvoyées comme prévu JSON:

$.ajax({ 
    type: 'POST', 
    dataType: 'json', // specifies the return type 
    url: 'place/add', 
    data: { 
     lat: lat, 
     lng: lng, 
     name: name, 
     address: address, 
     phone: phone, 
     review: review, 
     category: category 
    }, 
    success: function(data) { 
     alert(data); 
     alert(data.id); 
     // ...... 
    } 
}); 
+0

Les autres types de retours valides sont ** xml **, ** html **, ** script **, ** jsonp ** et ** text **. Le type de retour par défaut est * html ou xml *, il est donc préférable de spécifier le type de retour requis pour éviter le surdébit. –

0

Vous devez spécifier dataType: 'json' ou eval-vous les données retournées comme celui-ci var data = eval('(function(){return '+data+'})()');

BTW trust jQuery - utilisez dataType: 'json' si vous le pouvez.

1

Un complément utile en particulier, si vous exécutez plusieurs appels ajax est .ajaxSetup $

$.ajaxSetup({ 
    type: 'post', 
    dataType: 'json' 
}); 

Tous les appels suivants ajax utiliseront ceux-ci comme les valeurs par défaut.

Questions connexes