我是jquery的新手,正在四处乱逛,正在读取一些可爱的json,一切正常。.直到我添加了链接以下载表格以填写..然后单击它,它便完成了下载但是,现在也说“错误:未定义”,这似乎是因为用于填充json结果的代码尚未完成,但是我不确定如何避免这种情况。
<%@ Page Title="TEST Page" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="RSChanges.WebForm1" %>
<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server">
<script>
function getg1()
{
showData = $('#group1');
$.ajax({
url: '/url1',
type: 'GET',
success: function (data)
{
var content="";
var i;
for (i = 0; i < data.HDData.length; i++)
{
content += '<li>' + data.number+ '</li>';
}
showData.html(content);
},
error: function (xx, textStatus, errorThrown)
{
alert("error: " + xx.responseText);
}
});
}
$(document).ready(function ()
{
$('body').css('background-color', '#095BB5');
$('body').css('color', 'white');
$('a').css({ 'color': '#E0FFFF', 'textDecoration': 'underline' });
$('#g1').click(function () { $('#group1').toggle(); });
$('#group1').toggle();
getg1();
});
</script>
<div> Link to the current <a id="currentform" href="form.xls">download form</a><br /><br /></div>
Current Active group1 (click <a id="g1">here</a> to show/hide)<br />
<div class="group1" id="group1">(Loading please wait...)</div>
</asp:Content>
所以,这是代码,我用某种方式将json更新,并更改了事物名称以保护无辜者。
但是,它仍然会这样做,启动页面,并在单击显示错误的表单时显示错误:在弹出框中未定义。如果我单击组并展开它们(仅显示此处的1),然后等到所有内容下载完毕,似乎就不会发生。我怎么没有弹出错误框?
主表格-
<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site.master.cs" Inherits="RSChanges.SiteMaster" %>
<!DOCTYPE html>
<html lang="en">
<head runat="server">
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title><%: Page.Title %></title>
<asp:PlaceHolder runat="server">
<%: Scripts.Render("~/bundles/modernizr") %>
</asp:PlaceHolder>
<webopt:bundlereference runat="server" path="~/Content/css" />
<link href="~/favicon.ico" rel="shortcut icon" type="image/x-icon" />
<style>
html, body{ height: 100%;}
</style>
</head>
<body>
<form runat="server">
<asp:ScriptManager runat="server">
<Scripts>
<%--To learn more about bundling scripts in ScriptManager see https://go.microsoft.com/fwlink/?LinkID=301884 --%>
<%--Framework Scripts--%>
<asp:ScriptReference Name="MsAjaxBundle" />
<asp:ScriptReference Name="jquery" />
<asp:ScriptReference Name="bootstrap" />
<asp:ScriptReference Name="WebForms.js" Assembly="System.Web" Path="~/Scripts/WebForms/WebForms.js" />
<asp:ScriptReference Name="WebUIValidation.js" Assembly="System.Web" Path="~/Scripts/WebForms/WebUIValidation.js" />
<asp:ScriptReference Name="MenuStandards.js" Assembly="System.Web" Path="~/Scripts/WebForms/MenuStandards.js" />
<asp:ScriptReference Name="GridView.js" Assembly="System.Web" Path="~/Scripts/WebForms/GridView.js" />
<asp:ScriptReference Name="DetailsView.js" Assembly="System.Web" Path="~/Scripts/WebForms/DetailsView.js" />
<asp:ScriptReference Name="TreeView.js" Assembly="System.Web" Path="~/Scripts/WebForms/TreeView.js" />
<asp:ScriptReference Name="WebParts.js" Assembly="System.Web" Path="~/Scripts/WebForms/WebParts.js" />
<asp:ScriptReference Name="Focus.js" Assembly="System.Web" Path="~/Scripts/WebForms/Focus.js" />
<asp:ScriptReference Name="WebFormsBundle" />
<%--Site Scripts--%>
</Scripts>
</asp:ScriptManager>
<div class="container body-content">
<asp:ContentPlaceHolder ID="MainContent" runat="server"></asp:ContentPlaceHolder>
</div>
</form>
<footer>
<p>© <%: DateTime.Now.Year %></p>
</footer>
</body>
</html>
答案 0 :(得分:1)
通过单击链接,您将启动一个新的HTTP请求。这可能会中断当前正在页面上运行的所有JS(包括AJAX请求)。通常,单击超链接(或提交表单)将导致您的页面被破坏并加载一个新页面,这显然会杀死页面中运行的所有JS。
由于此请求恰巧返回了要下载的文件,因此显然不会最终发生。但是,由于期望从服务器获取新的HTML页面,它仍然可能会中断JS执行。
如果您输入
target="_blank"
在<a
标记中,以便它在另一个选项卡/窗口中打开URL,然后打开文件不应干扰当前页面,因为浏览器不再希望替换它。
答案 1 :(得分:0)
从您的代码中,我可以看到您的代码是从您发送AJAX请求的URL中获取的。尽管如此,我还是建议您检查收到的错误响应。 console.log(xx),因为显然xx没有带有键“ responseText”的数组。那是我们未定义的。