jqueryajax删除问题

jqueryajax删除问题,jquery,asp.net-mvc,ajax,Jquery,Asp.net Mvc,Ajax,你知道为什么它不传递“id”表单值吗 <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]; cons

你知道为什么它不传递“id”表单值吗

<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 javascript变量。此外,我建议您使用数据哈希而不是字符串连接,因为这将确保正确的编码:

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

更新:

问题似乎来自于您在这里使用jquery的事实:

当您从google CDN中包含它时,它可以正常工作:


在脚本中,未定义id javascript变量。此外,我建议您使用数据哈希而不是字符串连接,因为这将确保正确的编码:

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

更新:

问题似乎来自于您在这里使用jquery的事实:

当您从google CDN中包含它时,它可以正常工作:


目前,您需要发布而不是删除,如下所示:

[HttpDelete]
public ActionResult DeleteUser(string id)
{
    throw new NotImplementedException();
}
$.ajax({
  type: "POST", 
  url: '<%= Url.Action("DeleteUser") %>', 
  data: { id: id },
  success: function (data) {
    window.location.href = '<%= Url.Action("Users") %>'
  }
});
$.ajax({
类型:“POST”,
url:“”,
数据:{id:id},
成功:功能(数据){
window.location.href=''
}
});

直到1.4.4,…jQuery才会正确序列化删除请求的数据参数,因此,如果您可以等待jQuery 1.4.4错误修复版本,则应该解决此问题。

目前,您需要发布而不是删除,如下所示:

[HttpDelete]
public ActionResult DeleteUser(string id)
{
    throw new NotImplementedException();
}
$.ajax({
  type: "POST", 
  url: '<%= Url.Action("DeleteUser") %>', 
  data: { id: id },
  success: function (data) {
    window.location.href = '<%= Url.Action("Users") %>'
  }
});
$.ajax({
类型:“POST”,
url:“”,
数据:{id:id},
成功:功能(数据){
window.location.href=''
}
});

直到1.4.4,…jQuery才会正确序列化删除请求的数据参数,因此,如果您可以等待jQuery 1.4.4错误修复版本,则应解决此问题。

如果id是ASP脚本中的a值,则使用以下方法:

$.ajax({
type: 'DELETE', 
url: '<%= Url.Action("DeleteUser") %>', 
data: { id: <%= id %> },
success: function (data) {
    window.location.href = '<%= Url.Action("Users") %>';
}});
$.ajax({
键入:“删除”,
url:“”,
数据:{id:},
成功:功能(数据){
window.location.href='';
}});

如果id是ASP脚本中的a值,则使用以下方法:

$.ajax({
type: 'DELETE', 
url: '<%= Url.Action("DeleteUser") %>', 
data: { id: <%= id %> },
success: function (data) {
    window.location.href = '<%= Url.Action("Users") %>';
}});
$.ajax({
键入:“删除”,
url:“”,
数据:{id:},
成功:功能(数据){
window.location.href='';
}});


不幸的是,它已定义。它在哪里定义?我在你的代码片段中看不到它。还可以查看FireBug,查看发送到服务器的确切内容。这将有助于您的调试。我刚刚测试了这段代码,它运行得非常好。@Arnis L.,请尝试硬编码id。这对我来说很有效,因此问题与jquery或ASP.NET MVC无关。此外,您还在控制器操作中添加了一条注释,表示到目前为止还没有达到平衡。那它到哪里去了?谢谢你的帮助,但尼克是第一个。为您的时间投票。:)不幸的是,它被定义了。它在哪里被定义?我在你的代码片段中看不到它。还可以查看FireBug,查看发送到服务器的确切内容。这将有助于您的调试。我刚刚测试了这段代码,它运行得非常好。@Arnis L.,请尝试硬编码id。这对我来说很有效,因此问题与jquery或ASP.NET MVC无关。此外,您还在控制器操作中添加了一条注释,表示到目前为止还没有达到平衡。那它到哪里去了?谢谢你的帮助,但尼克是第一个。为您的时间投票。:)您确定您的服务器支持删除吗?引用RFC 2616 Fielding the DELETE方法请求源服务器删除Request-URI标识的资源。您确定您的服务器支持删除吗?引用RFC 2616 Fielding the DELETE方法请求源服务器删除Request-URI标识的资源请求URI。我已经用jquery 1.4.1测试了OPs代码,这是ASP.NET MVC 2默认包含的代码,它工作得非常好。@Darin-您假设OP没有更新其jquery版本,这是一个非常危险/通常是错误的假设。是的,使用
http://code.jquery.com/jquery-latest.min.js
不起作用。使用
http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js
工作正常。谢谢,@Nick。转到v1.4.2会有所帮助。我还以为它是JQuery(因为没有其他东西可以改变,而且它以前也能工作)。无论如何-在这样一个愚蠢的问题上浪费了太多时间。我已经用jquery 1.4.1测试了OPs代码,这是ASP.NET MVC 2默认包含的代码,它工作得非常好。@Darin-你假设OP没有更新他们的jquery版本,这是一个非常危险/通常是错误的假设。是的,使用
http://code.jquery.com/jquery-latest.min.js
不起作用。使用
http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js
工作正常。谢谢,@Nick。转到v1.4.2会有所帮助。我还以为它是JQuery(因为没有其他东西可以改变,而且它以前也能工作)。总之,在这样一个愚蠢的问题上浪费了太多的时间。