控制器返回404错误,即使它返回结果

all*_*lts 2 grails

我的URLMappings中有以下映射

addPurchase:"/addPurchase" {
            controller = "cart"
            action = "addPurchase"
        }
Run Code Online (Sandbox Code Playgroud)

我从我的GSP拨打了一个AJAX电话

function addPurchase(purchaseJSON, amount) {
            $.ajax({
                url: 'addPurchase',
                data: {
                    purchase: purchaseJSON
//                    quantity: amount
                },
                type : "POST",
                complete:function(data) {
                    updateCart();
                    updateOrderSummary(data);
                }
            });
        }
Run Code Online (Sandbox Code Playgroud)

我的控制器代码是

def addPurchase = {

      def result = cartService.addPurchase(session,params)

      log.debug"Results from addPurchase" + result
      response.status = 200
      return result as JSON

    }
Run Code Online (Sandbox Code Playgroud)

虽然我在控制台中看到输出,但在浏览器中出现错误404.为什么会这样?我的grails版本是@ 1.3.7

Vis*_*hal 12

您实际上是返回结果,而所需的响应是'text/html'或'text/json'

所以在你的控制器中你应该render得到结果而不是return它; 喜欢 :

def addPurchase = {
    def result = cartService.addPurchase(session,params)
    log.debug"Results from addPurchase" + result
    response.status = 200
    render result as JSON
}
Run Code Online (Sandbox Code Playgroud)