模态在我的网络服务器中不起作用,但在 localhost 中起作用。这是为啥?
Posted
技术标签:
【中文标题】模态在我的网络服务器中不起作用,但在 localhost 中起作用。这是为啥?【英文标题】:Modal is not working in my webserver but works in localhost. Why is that?模态在我的网络服务器中不起作用,但在 localhost 中起作用。这是为什么? 【发布时间】:2019-06-15 16:09:00 【问题描述】:我正在使用 asp.net 网络表单。我在页面顶部有按钮,当用户单击该按钮时,我想弹出一个模式窗口。 这是我用来实现它的代码。该代码在我的本地主机上运行良好。但在生产服务器上什么也没有发生。
<!-- Bootstrap -->
<link href="/Content/bootstrap.min.css" rel="stylesheet">
<script src="/Scripts/jquery-2.1.1.min.js"></script>
<script src="/Scripts/bootstrap.min.js"></script>
以上参考资料均放在母版页。
下面的代码放在aspx页面
<asp:UpdatePanel runat="server" UpdateMode="Conditional" ID="uppnlModalDistrict">
<ContentTemplate>
<asp:Button runat="server" ID="btnModalOpen" Width="100%" CssClass="btn btn-primary" Text="Select Location" OnClick="btnModalOpen_Click" />
<!-- Modal -->
<section>
<div id="myModal" class="modal fade" role="dialog">
<div class="modal-dialog">
<div class="modal-content">
</div>
</div>
</div>
</section>
</ContentTemplate>
</asp:UpdatePanel>
在我点击 btnModalOpen 按钮后的代码中。
protected void btnModalOpen_Click(object sender, EventArgs e)
GetModalDistricts(); //Function that populate data in Modal
uppnlModalDistrict.Update();
ScriptManager.RegisterStartupScript(this, this.GetType(), "Pop", "openModal()", false);
在aspx中
function openModal()
$('#myModal').modal('show');
那么这段代码有什么问题呢?
这是控制台错误
Error: Sys.WebForms.PageRequestManagerParserErrorException: The
message received from the server could not be parsed. Common causes
for this error are when the response is modified by calls to
Response.Write(), response filters, HttpModules, or server trace is
enabled.
Details: Error parsing near
【问题讨论】:
检查控制台是否有错误 嗨@RoryMcCrossan 请检查更新的答案 可能是您的网络服务器没有处理/阻止脚本,然后返回错误页面?尝试直接在浏览器中打开 .js 文件(或使用网络选项卡)以确保它们正确加载。但看起来不像 .js 文件或模态本身的问题。 确保您在实时服务器应用中引用了JQuery
和Popper.js
。
@Sylar,我刚刚为您发布了答案。请检查一下。
【参考方案1】:
这个错误的原因是你没有为你在启动时注册的 javascript 发出开始和结束脚本标签,因为方法 ScriptManager.RegisterStartupScript
的最后一个参数在按钮单击事件处理程序中为 false,而实际上应该是真的。
所以只需使用下面的行替换你原来的行,问题就会解决。
ScriptManager.RegisterStartupScript(this, this.GetType(), "Pop", "openModal()", true);
您应该将 false 作为最后一个参数传递给 ScriptManager.RegisterStartupScript
的唯一情况是您正在注册的脚本已经包含如下行的开始和结束脚本标记。
ScriptManager.RegisterStartupScript(this, this.GetType(), "Pop",
"<script type='text/javascript'>openModal()</script>", false);
【讨论】:
以上是关于模态在我的网络服务器中不起作用,但在 localhost 中起作用。这是为啥?的主要内容,如果未能解决你的问题,请参考以下文章
Jquery在混合android中不起作用,但在网络中起作用
新的 mysqli 连接在我的 Cpanel 中不起作用,但在我的计算机中起作用 [重复]