【问题标题】:ASP.NET and JavaScript code working locally, but not on IISASP.NET 和 JavaScript 代码在本地工作,但不在 IIS 上
【发布时间】:2014-01-28 00:32:38
【问题描述】:

我在使用 Expression Web 4.0 创建的网站时遇到了困难。所有字段都连接到 SQL 数据库,我已经包含了一个 JavaScript 代码来计算一些字段的值。该项目在本地使用 Microsoft Visual Studio 开发服务器时运行良好,但是一旦我将站点上传到 IIS 7 服务器,我似乎无法运行 JavaScript。页面没有返回任何错误,但计算不会运行。

我尝试过在兼容模式下运行 IE,尝试了不同的浏览器,但什么都没有。我尝试过使用外部 JS 文件和同样的问题。

我调试了 IE 和 Chrome 的问题,这是它遇到的错误: “无法获取未定义或空引用的属性‘值’”

我试过在表单前后放置 JavaScript 代码,同样的问题。

这是 JavaScript 代码:

<script type="text/Javascript">
function Calculate1(Served1) {


var Prepared1val = parseInt (document.getElementById("Prepared1").value);
var RTS1val = parseInt (document.getElementById("RTS1").value);
var Toss1val = parseInt (document.getElementById("Toss1").value);
Served1.value= Prepared1val - Toss1val - RTS1val;

 } 
 </script>

调试器在第一行代码之后立即停止,并且似乎无法找到值,即使它在那里。

【问题讨论】:

  • 从哪里调用代码中的“计算”JS 函数?我已经看到在生产中发生这样的问题,当在本地测试时一切正常 b/c 从生产服务器与本地通过网络传输的网页内容涉及更多延迟,并且 DOM 可能尚未加载javascript函数被调用。
  • 我从页面/代码的顶部调用它,我也尝试从页面底部一直调用它。我还测试了它为所涉及的每个文本框激活 AutoPostBack,但不行。
  • 这里不足以重现问题。你能制作一个以同样方式失败的 JSFiddle 吗?

标签: javascript asp.net iis iis-7


【解决方案1】:

您正在参考这些元素:“Prepared1”、“RTS1”、“Toss1”。确保在移动代码时这些元素名称仍然可用 - 听起来好像它们不可用。 ASP 可以更改元素 ID。

【讨论】:

  • 在函数顶部插入这个——这是一个开始: if (typeof (document.getElementById("Prepared1")) == 'undefined') alert('Prepared1 is not defined') ;
【解决方案2】:

好的,我找到了解决方案。感谢所有试图提供帮助的人。正如 Codenoire 所说,ASP 正在更改 ID 名称,并且在运行时它在 ID 名称之前添加“FormView”。我解决了一半的问题,因为它只适用于 IE 而不是 Chrome,在 Chrome 中,ID 被重命名为其他东西,这很奇怪,但只要它适用于 IE,我就很高兴。再次感谢!

【讨论】:

    【解决方案3】:

    错误的意思是浏览器试图获取value属性的对象引用为空。如果它出现在代码的第一行,则表示没有id为Prepared1的元素。你确定它在那里吗?大小写在元素 ID 中很重要。

    如果问题是您的硬编码 ID 与页面中的内容不匹配,您应该考虑使用 ClientID 属性。

    【讨论】:

    • 是的,它就在那里。我已经检查过它,甚至直接使用服务器中的文件以确保我正在预览相同的文件。这很奇怪。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-10
    • 2019-04-20
    • 2017-06-05
    相关资源
    最近更新 更多