2012-10-01 58 views
1

我是一個非常特殊的JSP和CSS我認爲的問題。我使用Spring和jQuery將ajax請求發佈到服務器。在我的JSP,如果我有以下行 -彈出HTTP 405同時嘗試Ajax請求

<button class="btn-icon btn-small btn-grey btn-cross" onClick="delete('${ManagerVO.ContactInfoVO.branchId}');"><span>&#160;</span>Delete</button> 

我的代碼performes的運作,但最終我得到了HTTP 405 - 請求方法「POST」不支持錯誤。現在,如果我改變上述行 -

<input type="button" class="btn-icon btn-small btn-grey btn-cross" onClick="delete('${ManagerVO.ContactInfoVO.branchId}');"><span>&#160;</span>Delete</input> 

代碼工作得很好。 jQuery代碼是

function delete(Id) { $.ajax({ 
        type: "POST", 
        url: "/XXX/XXX/XXX/delete", 
        data: "Id=" + Id, 
        success: function(errorVO){ 
          alert(errorVO.errorText);           
         }, 
         error: function(e){ 
          alert('Error, Please try later: ' + e); 
        }});} 

和控制器 -

@RequestMapping(value = "/delete", method = RequestMethod.POST) 
    public @ResponseBody 
    ResultVO delete(
      @RequestParam(value = "Id", required = true) String Id, 
      Model model) { 
     ResultVO resultVO = adminService.XXX(Id); 
     return resultVO; 
    } 

可有人請讓我知道如何解決這個問題。我想這是更多的CSS的東西。螢火蟲告訴我,由crome應用的默認用戶angent css是input type =「button」。按鈕CSS是如下 -

.btn-icon 
{ 
    background-repeat: repeat-x; 
    color: #FFF;  
    font-weight: bold; 
    display: inline-block; 
    text-decoration: none; 
    border-width: 1px; 
    border-style: solid; 
    padding: 0 15px 4px; 
    *padding: 0 7px 4px; 
    margin: 0; 
    text-shadow: 1px 1px 1px rgba(0,0,0,.2); 
    -moz-box-shadow: 1px 1px 1px rgba(0,0,0,.25); 
    -webkit-box-shadow: 1px 1px 1px rgba(0,0,0,.25); 
    -moz-border-radius: 4px; 
    -webkit-border-radius: 4px; 
    filter: progid:DXImageTransform.Microsoft.Shadow(color=#999999,direction=135,strength=2); 
    cursor: pointer; 
    position: relative; 
} 
+0

我認爲這是更多的CSS問題,輸入類型=「按鈕」必須在那裏。現在唯一的問題是,我的按鈕上隨同按鈕文本(value =「blah」)一起顯示的圖像不再顯示.....只顯示按鈕文本(blah):( – Sachin

回答

1

我想知道如果input版本也許是提交表單(這樣你就不會看到AJAX錯誤)。

嘗試改變onClick屬性的兩個版本(輸入&按鈕):

onClick="delete('${ManagerVO.ContactInfoVO.branchId}'); return false;"

,看看會發生什麼。

+0

但是接下來的問題是我將我的請求重定向到實際的控制器,我的頁面上有多個按鈕:) – Sachin

+0

不知道我理解你的評論...'return false'應該確保你的AJAX被觸發,而不是表單提交,這是你想要的認爲。 AJAX不會(通常)更改頁面URL,它只會更新部分頁面... – nickdos