jquery - ajax 成功函数未触发 MVC

标签 jquery ajax asp.net-mvc asp.net-mvc-4

我正在尝试通过ajax查询在div中获取成功结果。

Ajax 查询将 model 值作为参数,并根据该值过滤结果。

这是我的ajax查询和查看页面-

@model IEnumerable<FunRanger.Models.TagModel>
@foreach (var item in Model) {
    <script type="text/javascript">
        $(function () {
            $('#' + '@item.tagId').click(function () {
                $.ajax({
                    url: '/Tag/TagFilter/?tagName=' + '@item.tagName',
                    type: 'post',
                    success: function (data) {
                        $('#funhome-partial').html(data);
                    }
                });
            });

        });
    </script>
    <div class="tags">
        <a href="#" id="@item.tagId">#@item.tagName</a>
    </div>

}

我试图在另一个 id 为“funhome-partial”的 div 中过滤此结果。该 div 位于我的项目的另一个项目文件中。

行动-

[HttpPost]
public ActionResult TagFilter(TagModel tag) {
    var cardlist = (from u in db.CardTables
                    where u.CardHashCode.Contains(tag.tagName)
                    select new CardModel {
                        cardHashCode = tag.tagName,
                        cardDate = u.CardDate,
                        cardFileName = u.CardFileName,
                        cardFilePath = u.CardFilePath,
                        cardID = u.CardID,
                        cardTitle = u.CardTitle
                    }).ToList();
    return View("FunHome", cardlist);

}

一切正常。我根据该参数获得过滤记录,我可以通过在此处放置断点来检查这些记录。

但是这个查询不会调用ajax的success函数并显示这个错误-

如果参数名为RipEnglish

Failed to load resource: the server responded with a status of 500 (Internal Server Error) http://localhost:61203/Tag/TagFilter/?tagName=RipEnglish

我如何获得ajax成功结果,这也是一个很好的方法吗?

最佳答案

如果您没有丰富的 AJAX 经验,则可能很难对其进行故障排除。适用于所有现代浏览器的开发人员工具(或 FireBug)是您的 friend 。它们使查看/理解服务器作为响应返回的内容变得更加容易。

由于请求使用 Ajax,浏览器不会呈现返回的任何错误页面。

使用 Chrome(其他工具类似,通常使用 CTRL + SHIFT + I 或 F12 打开):

  1. 使用 (CTRL + SHIFT + I) 打开开发人员工具 Pane 。
  2. 点击网络标签。
  3. 单击页面元素以触发单击处理程序并发送 Ajax 请求。
  4. 网络选项卡(左下角)中找到并单击网络请求。
  5. 网络请求旁边的 Pane 包含“ header ”、“预览”和“响应”选项卡。

header 将向您显示请求的内容(发送到服务器的内容)。

响应将向您显示服务器响应的内容。这可能是成功请求的 JSON,或者如果发生错误,它可能是错误页面的 HTML 源。

预览选项卡将呈现服务器响应(如果可能)。如果您从服务器收到错误响应/页面,这尤其有用,因为您不必费力地浏览原始 HTML 来查找错误详细信息。

如果您的 AJAX 调用失败,并且服务器返回 500 错误,您可以随时检查服务器日志或查看“网络”>“预览”选项卡以查看返回的错误详细信息。您可以像处理任何传统服务器响应一样解决该错误。

关于jquery - ajax 成功函数未触发 MVC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21410526/

相关文章:

javascript - 如果文本包含 '@' 更改 '@' 的颜色

javascript - 页面加载时显示模态

jquery - 我们可以使用跨域中的 Jquery $.ajax() 调用通过 https 访问 WCF 服务吗?

javascript - MVC中如何通过jquery将弹出窗口的值传递到父窗口

c# - azure 的 MVC5 SignalR "500 timed out"

javascript - 第二次点击就可以了,为什么?

javascript - 使用JQuery获取没有ID或类的 anchor 下一个元素的现有div的子div

javascript - 如何从 Ajax 调用中获取要在 Bootbox 按钮功能中使用的值?

c# - 模态弹出扩展问题

asp.net-mvc - 我应该在 ASP.NET MVC 中使用 Anti-XSS 安全运行时引擎吗?