2009-12-03 89 views
0

我有一个使用jQuery的页面。jQuery - .val()在php/apache中效果很好,但在php/iis上效果不是很好

$("#start_date").val() 

上面的代码在Apache服务器上返回一个框的值很好。但是,在IIS中,它返回“未定义”。

jQuery的IIS部署需要特殊的设置注意事项吗?

编辑#1

我也可能会指出,这是使用jQuery的日期选择器。页面上的其他字段,只是标准文本框工作正常。

编辑#2

好了,我缩小下来多一点。此日期标签的定义是这样的:

id="add_start_date" name="start_date" 

当我把它改成这样:

id="start_date" name="start_date" 

它工作正常。为什么服务器之间的区别?似乎这不应该有任何改变。

+0

不应该有文件完全相同,除非IIS阻止了js文件,但是您应该会收到另一条错误消息。 –

+0

顺便说一句,你可以使用'$(“#start_date”)。datepicker('getdate');'在datepicker输入中获取日期。 –

+0

有没有机会获得公共链接? –

回答

1

查看从Apache服务器生成的源代码,并将其与IIS服务器生成的源代码进行比较。此外,请查看您是否可以使用WebKit浏览器(Safari或Chrome)或Firefox可以查看是否正在传输JavaScript文件。

1

确保jQuery脚本文件位于页面可访问的位置 - 您可以通过测试window.$(假设没有其他定义$存在)来检查是否存在jQuery。

1

问题很可能是在ASP.NET应用程序中,对于具有该ID的服务器控件,该元素的实际ID不是start_date。当一个服务器控件位于一个容器中时,容器ID将被添加到控件ID中以保持其唯一性。

你可以得到使用ClientID属性生成的ID:

$('#'+id).val() 
+0

或者懒惰的方式:'$('#<%= start_date.ClientID%>')。val()' –

+1

我认为这可能是这样的,但是OP在标题中有PHP/IIS :) –

+0

是的,对不起 - 这确实是PHP。虽然尼斯认为:) – bugfixr

3

这是根本不可能的jQuery的特点:

var id = '<%=start_date.ClientID%>'; 

的你在jQuery的代码中使用的名称取决于您选择的Web服务器。

不同的网络服务器可能会提供不同的HTML标记,如前面发布的帖子所示,但问题在于您正在针对不同的HTML组运行jQuery。 jQuery本身完全在浏览器内执行,这使得基于浏览器的差异成为唯一真实的差异。

我知道这并不令人放心,我只是想让你意识到你在吠叫错误的树。 :/

0

您是否检查过HTML是相同的,并且确实存在ID为start_date的元素(且只有一个)?

如果不是这样,请确保正确包含jQuery代码。一个好的测试是将alert('hello')添加到文件中 - 如果您收到警报,则会包含该文件。

相关问题