2009-12-03 143 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')添加到文件中 - 如果您收到警報,則會包含該文件。

相關問題