2017-09-13 73 views
0

單擊元素時,我有一個ajax調用觸發器。阿賈克斯去控制器。更改操作名稱時請求的資源不可用

function(){ 

    $.ajax({ 
        url: "/GAIA/RemoveCE/removeFlow", 
        type: "get", 
        data: {id:id}, 
        cache: false, 
        async: true, 
        success: function() { 
         window.location.reload() 
        }, 
        error: function(xhr) { 
         console.log("ERROR"); 
         console.log(xhr.readyState); 
         console.log(xhr.status); 
        } 

       }); 
       event.preventDefault(); 
      }); 

我在這個控制器上有一個名爲「removeFlow」的動作和一個名爲「removeMachine」的動作。

def removeFlow(Long id){ 
    println id 
} 

def removeMachine(Long id){ 
    println id 
} 

當調用ajax來觸發「removeFlow」時,不會打印任何內容。

當調用ajax來觸發「removeMachine」時,打印正確。

兩次調用收到的錯誤消息是404資源不可用,我明白,因爲我沒有實現一個視圖,我不重定向。我不明白爲什麼沒有打印。

這是Grails的2.5.6運行

編輯:

這是我在開發者控制檯上獲得(被點擊時元和Ajax被觸發)錯誤:

jQuery的1.11 ?.1.js編譯=假&編碼= UTF-8:9631 GET http://localhost:8080/GAIA/removeCE/removeFlow?id=41&_=1505308707652 404(未找到)

如果我手動輸入URL(/ GAIA/removeCE/removeFlow ID = 41?)1得到這樣的:

:8080/GAIA/removeCE/removeFlow ID = 41:1 GET http://localhost:8080/GAIA/removeCE/removeFlow?id=41 404(未找到)

+0

這是最有可能的資源是不可用的服務器上獲取地址在阿賈克斯,或在不同的URL上,首先使用瀏覽器確認URL路徑。 –

回答

0

在您需要渲染的東西作爲對AJAX調用的響應Groovy的動作,否則你的電話轉到成功,但它會返回404錯誤。 更改您的代碼,如下所示。

def removeFlow(Long id){ 
    println id 
    // render anything string or (List/Map as Json) 
    render "Deleted Id:"+id+" successfully" 
} 


def removeMachine(Long id){ 
    println id 
// render anything string or (List/Map as Json) 
    render "Deleted Id:"+id+" successfully" 
} 

//接收在阿賈克斯成功響應,

success: function(response) { 
     console.log(response) 
    //OR 
    alert(response); 
} 

//使用鏈接的taglib

url: '<g:createLink controller="removeCE" action="removeFlow"/>' 
+0

我明白你的意思,當我輸入你的代碼並改變ajax調用來調用「removeMachine」時,它呈現正常。 但是,如果我打電話「removeFlow」它仍然給我404資源不可用錯誤。 這似乎很奇怪,我可能忽略了一些簡單的事情 – jacob88

+0

@ jacob88不錯..! –

+0

因此,不幸的是問題仍然存在:-) – jacob88