2012-05-21 2 views
0

Grails의와 자바 스크립트와 아약스 ...오류 나는 클라이언트 측에서이 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' 
        }); 
      }); 

그리고 서버 측

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

서버 측에서 어떤 활동이 있습니까 ?? Firebug 또는 이와 유사한 것을 사용하여 요청을 검사하고 클릭 할 때 일어나는 일을 볼 수 있습니까? – gotomanners

답변

0

이것은 디버깅 방법에 관한 것입니다.

요청이 서버에 제공되는지 확인하십시오. 컨트롤러에서 요청한 작업에 "여기에서 실행"로그를 추가하여이를 수행 할 수 있습니다.

"여기에서 실행 중"이 인쇄되면 요청이 전송되고 서버가 예상 된 결과를 반환하지 않는 방법을 찾아야합니다.

로그가 인쇄되지 않으면 자바 스크립트를 다시 확인해야한다는 의미입니다. Firebug을 사용하면 까다로운 자바 스크립트 버그를 발견하는 데 도움이 될 수 있습니다.


그런데 자바 스크립트에서 "$"기호 대신 "jQuery"를 사용해야한다고 생각합니다. 즉, 같은 다른 라이브러리와의 충돌 회피를위한 것입니다

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

잘 내가 Grails의
코드를 해달라고하지만 가장 가까운 URL 매핑이 가정 메신저이 "/cars/$id?"
로 나타납니다 ID가 이 필요하지만 자바 스크립트에서 당신이 어떤 변수를 다시 보내지 않는 코드 Id

관련 문제