ASP.NET/Javascript错误。偶尔发生';长度为null或不是对象';
这件事让我很困惑。我有一个web应用程序,它可以执行许多功能,但它要完成的部分是在执行搜索功能时调用web服务并从DB2返回结果 奇怪的是,错误并不总是发生,而且似乎只有在通过vip访问我的web应用程序时才会发生(vip位于负载平衡器上,在2台IIS服务器上循环)。当使用其中一台服务器的直接URL访问web应用程序时,不会出现错误 这让我相信,我的web.config有什么问题吗 我还搜索了我的javascript代码,我没有在任何地方使用长度 请帮帮我,我一直在用头撞墙 用代码更新(我在下面包括了必要的代码,省略了其余代码): //Javascript*** 函数ValidateSearch(){ASP.NET/Javascript错误。偶尔发生';长度为null或不是对象';,javascript,asp.net,web-config,null,Javascript,Asp.net,Web Config,Null,这件事让我很困惑。我有一个web应用程序,它可以执行许多功能,但它要完成的部分是在执行搜索功能时调用web服务并从DB2返回结果 奇怪的是,错误并不总是发生,而且似乎只有在通过vip访问我的web应用程序时才会发生(vip位于负载平衡器上,在2台IIS服务器上循环)。当使用其中一台服务器的直接URL访问web应用程序时,不会出现错误 这让我相信,我的web.config有什么问题吗 我还搜索了我的javascript代码,我没有在任何地方使用长度 请帮帮我,我一直在用头撞墙 用代码更新(我在下面
//passes search text to webservice
//fills gridview with returned data
//lastly calls javascript function to stop spinner
ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "searchComplete", "<script type='text/javascript'>searchComplete();</script>", false);
}
函数ShowWait(){
//passes search text to webservice
//fills gridview with returned data
//lastly calls javascript function to stop spinner
ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "searchComplete", "<script type='text/javascript'>searchComplete();</script>", false);
}
函数searchComplete(){
//passes search text to webservice
//fills gridview with returned data
//lastly calls javascript function to stop spinner
ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "searchComplete", "<script type='text/javascript'>searchComplete();</script>", false);
//清除以前的搜索文本框
document.getElementById(“”).value=“”;
document.getElementById(“”).value=“”;
spinner.stop();
}
//加价***
<div class="searchlabel">
<label>Email Address</label><asp:TextBox ID="txtEmail" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator runat="server" ID="EmailReq"
ControlToValidate="txtEmail" ValidationGroup="TransSearch"
Display="None"
ErrorMessage="<b>Required Field Missing</b><br />Email is required." />
<asp:ValidatorCalloutExtender runat="Server" ID="EmailReqE"
TargetControlID="EmailReq"
HighlightCssClass="validatorCalloutHighlight" />
</div>
<div class="searchlabel">
<label>Phone</label><asp:TextBox ID="txtPhone" runat="server" Font-Size="Medium"></asp:TextBox>
<asp:RequiredFieldValidator runat="server" ID="PhnReq"
ControlToValidate="txtPhone" ValidationGroup="TransSearch"
Display="None"
ErrorMessage="<b>Required Field Missing</b><br />Phone is required." />
<asp:ValidatorCalloutExtender runat="Server" ID="PhnReqE"
TargetControlID="PhnReq"
HighlightCssClass="validatorCalloutHighlight" />
</div>
<asp:Button ID="btnSearch" runat="server" Text="Search" Width="90px" OnClientClick="return ValidateSearch();" OnClick="Search_Click" />
电子邮件地址
电话
//代码隐藏***
公共无效搜索\u单击(对象发送者,事件参数e)
{
//passes search text to webservice
//fills gridview with returned data
//lastly calls javascript function to stop spinner
ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "searchComplete", "<script type='text/javascript'>searchComplete();</script>", false);
//将搜索文本传递给webservice
//用返回的数据填充gridview
//最后调用javascript函数停止微调器
ScriptManager.RegisterStartupScript(this.Page,this.GetType(),“searchComplete”,“searchComplete();”,false);
}可能您的javascript函数没有获得您提供的文本框
document.getElementById('<%# txtEmail.ClientID %>').value
document.getElementById(“”).value
使用以下方法检查值:
alert(document.getElementById('<%# txtEmail.ClientID %>').value )
警报(document.getElementById(“”).value)
如果是返回值。这可能是您的微调器停止()的原因;它不起作用
使用警报查看它是否正在进入您的函数。我每次陷入javascript时都会使用它。它帮助我找出函数在哪一行之后给出错误。它发生在同一个地方还是不同的地方?每次都发生在同一个地方。这并不是一直都会发生。以下是步骤。。。1) 单击搜索按钮2)OnClientClick启动javascript,检查页面\u ClientValidate,返回true并启动spinner.spin(等待gif)3),然后OnClick启动codehehind,webservice在其中调用,并返回数据4)调用javascript函数停止spinner,即是如此。当它出错时,返回结果,但微调器仍在旋转,javascript错误为“Length is null or not a object”,我添加了单击搜索按钮的路径代码。遗漏了任何不必要的代码。就是这样,我不能100%确定错误发生在哪里。我知道它不在代码背后,因为我犯了错误。它发生在调用searchComplete()之前,因为我的文本框没有清除,微调器也没有停止。但正如我所说,这种情况并不是每次都会发生,而且只发生在生产中,这使得调试变得很困难。我明白你的意思,但我还是回到了我最初的问题。如果它在试图获取文本框值时爆炸了,它不是每次都会爆炸吗?正如我前面所说的,当在本地和Dev服务器上运行时,同样的代码可以完美地工作。但在生产过程中(同样的代码)经常会发生爆炸。我将称之为“已应答”。但是我认为运行vip(负载平衡器)会导致这些问题,不管是web.config不正确还是其他原因。我选择了忘记vip(负载平衡器)而只使用direct server ip。我无法通过您提供的代码告诉您到底是什么问题。我认为这可能就是问题所在。但是,当您的函数找不到您发送给它的控件时,会导致“非对象”。因此,这里的问题可能是导致控件(未)加载的原因。jakk220:这可能会解决您的问题。如果(document.getElementById(“”).value)!=""; {//那么你的代码}如果你同时检查文本框邮件和电话,效果会更好。