2011-06-16 61 views
0

好的,所以现在我试图从正常的文本链接调用Ajax函数,但是我无法让它正常工作(或根本不能)。如果我把它称为一个按钮,它会正常工作。在.Net MVC中使用Ajax 2

本质上我试图重新排序表中的项目。

如何从ActionLinkAjax调用Ajax?

下面是从一个按钮调用时能正常工作的脚本:

<script type="text/javascript"> 

     $(document).ready(function() { 

      $(".Name").click(function() { 
       $.ajax({ 
        url: '<%= Url.Action("MyAction") %>', 
        dataType: 'html', 
        success: function(result) { $("#tableToUpdate").html(result); } 
       }); 
      }); 
     }); 
</script> 

回答

4

你需要通过返回从单击处理虚假取消锚的默认操作;

$(".Name").click(function() { 
    $.ajax({ 
     url: '<%= Url.Action("MyAction") %>', 
     dataType: 'html', 
     success: function(result) { 
      $("#tableToUpdate").html(result); 
     } 
    }); 
    return false; // <-- that's important 
}); 

但我可能会直接使用链接的href:

<%= Html.ActionLink("Foo", "MyAction", null, new { @class = "Name" }) %> 

,我会悄悄地AJAXify在一个单独的JavaScript文件(渐进增强):

$(function() { 
    $('.Name').click(function() { 
     $('#tableToUpdate').load(this.href); 
     return false; 
    }); 
}); 
+0

或者你可以简单地设置href =# – Tassadaque 2011-06-16 19:22:07

+0

@Tassadaque,不,从SEO角度来说这很糟糕,因为它会让你的网站无法获取。用JavaScript逐步增强是一种更好的技术。 – 2011-06-16 19:22:45

+0

完美,谢谢!我没有意识到我必须改变脚本!当我被允许时会接受(从现在开始5分钟) – James 2011-06-16 19:26:33

1

具有u看着ajax.actionlink

<%= Ajax.ActionLink("Update Status", "GetStatus", new AjaxOptions{UpdateTargetId="status" }) %>