2012-05-21 39 views
0

我在客戶端這jQuery函數的AJAX ...做錯誤使用Grails和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' 
        }); 
      }); 

而在服務器端

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) 
} 
} 
這Grails的代碼時

但是當按鈕#add-car被按下時,它不會返回任何東西......我在做什麼錯了?

+1

有沒有在服務器端的任何活動?你可以使用螢火蟲或類似的東西檢查請求,看看你點擊時發生了什麼。 – gotomanners

回答

0

這是關於調試方法。

請檢查請求是否到達您的服務器。您可以通過在控制器中添加一些「在此運行」日誌到您要求的操作來完成此操作。

如果打印出「正在運行」,則發送請求,您必須找出服務器未返回預期結果的方式。

如果日誌沒有打印出來,這意味着你必須重新檢查你的javascript。使用Firebug可能有助於發現一些棘手的JavaScript錯誤。


順便說一句,我認爲你應該在你的javascript中使用「jQuery」而不是「$」符號。這是爲了避免與其他庫衝突,例如:

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

以及我不Grails中
代碼,但你最近的URL映射似乎是本"/cars/$id?"
其中即時通訊假設需要一個ID 但是從您的JavaScript代碼你不發回任何變數Id