2010-11-01 82 views
1

任何想法,爲什麼這不會通過'ID'的形式值?Jquery AJAX DELETE問題

<script src="http://code.jquery.com/jquery-latest.min.js"></script> 
<script type="text/javascript" language="javascript"> 
    var deleteUser = function() { 
    var id = this.id.split('lnk_delete_user_')[1]; 
    console.log(id); //prints frickin "2" 
    $.ajax({ 
    type: "DELETE", url: '<%= Url.Action("DeleteUser") %>', data: "id=" + id, 
    success: function (data) { 
    window.location.href = '<%= Url.Action("Users") %>' 
    } 
    }); 
    }; 
    $(function ($) { $("a[id^=lnk_delete_user_]").confirm().click(deleteUser); }); 
</script> 

服務器端不接收'id'參數。什麼可能是錯的?

有沒有檢查權之前$.ajax(...) ID等於2

試圖重寫data: "id="+id,data: {id:id},沒有什麼變化。

這是我的行動看起來像:

[HttpDelete] 
[Authorize(Roles="admin")] 
public ActionResult DeleteUser(string id){ 
    //does not get even so far 
} 
+0

你確定刪除的支持您的服務器上? – 2010-11-01 17:02:23

+0

引用RFC 2616字段 DELETE方法請求源服務器刪除由Request-URI標識的資源。 – 2014-05-06 17:33:59

回答

4

就目前而言,你需要發佈,而不是刪除,是這樣的:

$.ajax({ 
    type: "POST", 
    url: '<%= Url.Action("DeleteUser") %>', 
    data: { id: id }, 
    success: function (data) { 
    window.location.href = '<%= Url.Action("Users") %>' 
    } 
}); 

jQuery將無法正常序列DELETE請求的數據參數,直到1.4.4,there is already a fix in place for this ...所以如果你可以等待jQuery 1.4.4 bugfix版本,這應該被解決。

+0

我已經用jQuery 1.4.1測試了OP代碼,這是ASP.NET MVC 2默認包含的,它工作得很好。 – 2010-11-01 17:10:07

+0

@Darin - 你假設OP沒有更新他們的jQuery版本,這是一個非常冒險/常常是錯誤的假設。 – 2010-11-01 17:12:56

+0

是使用'http:// code.jquery.com/jquery-latest.min.js'不起作用。使用'http:// ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js'可以正常工作。 – 2010-11-01 17:19:50

2

在腳本中的ID JavaScript變量沒有定義。此外,我會使用數據散列,而不是字符串連接推薦你,因爲這將確保正確的編碼:

$.ajax({ 
    type: 'DELETE', 
    url: '<%= Url.Action("DeleteUser") %>', 
    data: { id: '123' }, 
    success: function (data) { 
     window.location.href = '<%= Url.Action("Users") %>'; 
    } 
}); 

如果你的控制器動作看起來是這樣的:

[HttpDelete] 
public ActionResult DeleteUser(string id) 
{ 
    throw new NotImplementedException(); 
} 

UPDATE:

看起來問題來自於你從這裏使用jquery的事實:http://code.jquery.com/jquery-latest.min.js

當您從谷歌CDN包括它正常工作:

http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js

+0

不幸的是 - 它被定義。 – 2010-11-01 17:02:16

+0

它在哪裏定義?我無法在代碼片斷中看到它。另外看FireBug,看看發送給服務器的是什麼。這將有助於您的調試。我剛剛測試過這段代碼,它工作得很好。 – 2010-11-01 17:02:58

+0

更新後的問題只針對你... – 2010-11-01 17:08:06

0

如果ID是你的ASP腳本中的一個值,然後使用此:

$.ajax({ 
type: 'DELETE', 
url: '<%= Url.Action("DeleteUser") %>', 
data: { id: <%= id %> }, 
success: function (data) { 
    window.location.href = '<%= Url.Action("Users") %>'; 
}});