javascript - 空字符串传递给 jquery.unobtrusive-ajax.js 中的 getElementById() :16

标签 javascript jquery ajax asp.net-mvc razor

我正在开发一个 ASP.NET MVC4 应用程序,并已开始使用 jQuery actionlinks。 但是,当我运行以下 Razor 代码(并单击查看票证操作链接)时,我收到一个通用 jQuery 错误(两次),指出空字符串已传递给 getElementById()。 我不知道这个错误发生在哪里,因为 Firefox 仅链接到 jQuery 代码。 这是我的 Razor 代码:(我知道 js 函数 show 和 hideticket 是空的,但这是为了简化代码):

<script>
function ShowTicket(id) {
    $("#viewTicketButton" + id).hide();
    $("#hideTicketButton" + id).show();
    $("#viewTicket").show();
}

function HideTicket(id) {
    $("#viewTicketButton" + id).show();
    $("#hideTicketButton" + id).hide();
    $("#viewTicket").hide();
}
</script>

<h3>Your tickets</h3>
<table border="1">
    <tr>
        <td>Title:</td>
        <td>Urgency:</td>
        <td>Status:</td>
    </tr>
    @foreach (SupportTicketViewData t in Model.supportTicketViewDataList)
    {
        <tr>
            <td>@t.title</td>
            <td>@t.text</td>
            <td>@t.status</td>
            <td>@Ajax.ActionLink("View Ticket", "ViewTicket", new { id = t.id },
            new AjaxOptions
            {
                HttpMethod = "GET",
                InsertionMode = InsertionMode.Replace,
                UpdateTargetId = "viewTicket",
                OnComplete = "ShowTicket(" + t.id +");"
            }, new { id = "viewTicket" + t.id })</td>
            <td><button  id="@Html.Raw("HideTicket" + t.id)" onclick="HideTicket(@t.id);">Hide Ticket</button></td>
        </tr>
    }
</table>

<div id="viewTicket">
</div>

此外,我从 GET 请求中得到了很好的结果,因为它被插入到 div 元素中,但是在 Firefox 中调试时出现了 2 个错误。

此外,当我单击 viewTicketButton 时,按钮不会按应有的方式隐藏。

最佳答案

当发送通过 Ajax.BeginForm 或 Ajax.ActionLink 创建的表单并打开不显眼的验证时,会出现警告“空字符串传递给 getElementById()”。
就我而言,向 Ajax.BeginForm 支持的所有事件添加处理程序解决了警告问题:

@using (Ajax.BeginForm(“SomeAction”, null, new AjaxOptions() {
  OnBegin = “someFunction”,  
  OnComplete = “ShowTicket”,  
  OnFailure = “someFunction”,  
  OnSuccess = “someFunction”  
} 
....

我相信这应该可以解决您的问题。
有关问题的更多详细信息,请访问我的 blog post .

关于javascript - 空字符串传递给 jquery.unobtrusive-ajax.js 中的 getElementById() :16,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17948090/

相关文章:

javascript - Jquery:表单验证不起作用

javascript - Node js- req.body 在处理 ajax post 请求时为空或未定义

javascript - jquery 淡入和淡出动态内容

javascript - 使用 React 进行组件间通信

javascript - 在 JavaScript 中仅使用表达式/不使用语句是否会降低性能?

javascript - 如何从 Thunderbird Message Composer 获取当前选中的文本

javascript - react .js : Managing State and Component Rerender

wordpress - 如何从 HTML 中提取 jQuery 代码并执行它?

javascript - 无法访问 $.ajax.done() 中的全局变量

php - 尝试将数组恢复到表中的列表