我有一个使用jQuery的页面。
$("#start_date").val()
上面的代码在Apache服务器上返回一个框的值。但是,在IIS中,它返回“undefined。”
是否存在jQuery的IIS部署所需的特殊设置注意事项?
编辑#1
我也可能会指出这是使用jQuery datepicker。页面上只是标准文本框的其他字段工作正常。
编辑#2
好的,所以我把它缩小了一点。此日期的标记定义如下:
id="add_start_date" name="start_date"
当我将其更改为:
id="start_date" name="start_date"
工作正常。为什么服务器之间存在差异?看起来这根本不应该有任何区别。
答案 0 :(得分:3)
jQuery的功能根本不可能取决于您选择的Web服务器。
有可能不同的Web服务器提供了不同的HTML标记,就像之前的海报建议的那样,但问题是你正在针对不同的HTML集运行jQuery。 jQuery本身完全在浏览器中执行,这是基于浏览器的唯一差异。
我知道这并不让人放心,我只是想让你意识到你正在咆哮着错误的树。 :/
答案 1 :(得分:1)
确保jQuery脚本文件位于页面可访问的位置 - 您可以通过测试window.$
来检查jQuery是否存在(假设$
没有其他定义存在)。
答案 2 :(得分:1)
问题很可能是在ASP.NET应用程序中,对于具有该id的服务器控件,该元素的实际id不是start_date
。当服务器控件位于容器内时,容器ID将被添加到控件ID之前,以使其保持唯一。
您可以使用ClientID属性获取生成的ID:
var id = '<%=start_date.ClientID%>';
您在jQuery代码中使用该名称:
$('#'+id).val()
答案 3 :(得分:1)
查看从Apache服务器生成的源,并将其与IIS服务器生成的源进行比较。另外,看看您是否可以使用WebKit浏览器(Safari或Chrome)或Firefox来查看是否正在传输JavaScript文件。
答案 4 :(得分:0)
您是否检查过HTML是否相同且肯定有一个ID为start_date
的元素(且只有一个)?
如果不是这样,请确保正确包含jQuery代码。一个好的测试是将alert('hello')
添加到文件中 - 如果收到警报,则会包含该文件。