2012-05-21 2 views
0

J'ai cette fonction jquery du côté client ...Erreur lorsque vous faites ajax avec Grails et javascript

$('#add-car').on('click', function() { 
      $.ajax({ 
        type: 'POST', 
        url: 'cars/', 
        data: {brand: 'brand', model: 'model', price: 100, 
          registryYear:1999}, 
        success: function(data) { console.log(data)}, 
        dataType: 'json' 
        }); 
      }); 

Et ce code Grails dans le côté serveur

class UrlMappings { 

    static mappings = { 
      "/cars/$id?"(controller: "cars") { 
        action = [GET:"list", POST:"save", DELETE:"delete", PUT:"edit"] 
      } 
      "/$controller/$action?/$id?"{ 
        constraints { 
          // apply constraints here 
        } 
      } 

      "/"(view:"/index") 
      "500"(view:'/error') 
    } 

}

import grails.converters.JSON 

class CarsController { 

def index() { 
    render (Car.findAll() as JSON) 
} 

def save() { 
    def json = request.JSON 
    def car = new Car(json) 
    car.save() 
    render (json) 
} 

def delete() { 
    def car = Car.findById(params.id) 
    car?.delete() 
    render (car as JSON) 
} 

def edit() { 
    def car = Car.findById(params.id) 
      bindData(car, request.JSON) 
    render (car.save() as JSON) 
} 
} 

Mais lorsque le bouton # add-car est enfoncé, il ne renvoie rien ... Qu'est-ce que je fais de mal?

+1

Y a-t-il une activité sur le serveur? Pouvez-vous utiliser firebug ou quelque chose de similaire pour inspecter la demande et voir ce qui se passe lorsque vous cliquez. – gotomanners

Répondre

0

Il s'agit de la méthode de débogage.

Veuillez vérifier si la requête parvient ou non à votre serveur. Vous pouvez le faire en ajoutant quelques logs "Running ici" dans votre action demandée sur le contrôleur. Si le «Running ici» est imprimé, la demande a été envoyée et vous devez trouver comment le serveur ne renvoie pas le résultat attendu.

Si le journal ne s'imprime pas, cela signifie que vous devez vérifier à nouveau votre javascript. L'utilisation de Firebug peut vous aider à découvrir des bogues javascript difficiles. A propos, je pense que vous devriez utiliser "jQuery" au lieu de "$" dans votre javascript. C'est d'éviter les conflits avec d'autres bibliothèques, telles que:

jQuery('#add-car').click(function() { 
.... 
      }); 
0

bien je ne code Grails
mais votre carte le plus proche URL semble être ce "/cars/$id?"
qui im ​​en supposant nécessite un ID mais de votre javascript code que vous ne renvoyez aucune variable nommée Id

Questions connexes