jQuery - .val()在php / apache中效果很好,但在php / iis上效果不是很好

时间:2009-12-03 00:19:11

标签: jquery

我有一个使用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"

工作正常。为什么服务器之间存在差异?看起来这根本不应该有任何区别。

5 个答案:

答案 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')添加到文件中 - 如果收到警报,则会包含该文件。