0

私はクライアント側にこのjquery関数を持っています...

$('#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'
                   });
            });

そして、サーバー側のこのGrailsコード

    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)
 }
 }

しかし、ボタン#add-carを押すと、何も返されません...何が間違っているのでしょうか?

4

2 に答える 2

0

デバッグ方法についてです。

リクエストがサーバーに届くかどうかを確認してください。これを行うには、コントローラーで要求されたアクションに「ここで実行中」のログを追加します。

「ここで実行中」が出力された場合、リクエストが送信されたため、サーバーが期待される結果を返さない方法を確認する必要があります。

ログが印刷されない場合は、JavaScriptを再確認する必要があることを意味します。Firebugを使用すると、いくつかのトリッキーなjavascriptバグを発見するのに役立つ場合があります。


ちなみに、JavaScriptでは「$」記号の代わりに「jQuery」を使用する必要があると思います。これは、次のような他のライブラリとの競合を回避するためです。

jQuery('#add-car').click(function() {
....
            });
于 2012-05-22T07:22:10.637 に答える
0

まあ私はgrailsでコードを書き
ませんが、あなたの最も近いURLマッピングはこれ"/cars/$id?"
であるように見えますが、これはIDが必要であると想定していますが、JavaScriptコードからはId

于 2012-05-22T07:34:28.447 に答える