2009-12-03 2 views
0

У меня есть страница, использующая jQuery.jQuery - .val() отлично работает в php/apache, но не так хорошо работает на php/iis

$("#start_date").val() 

Приведенный выше код возвращает значение поля на сервере Apache. Однако в IIS он возвращает «undefined».

Существуют ли особые настройки, необходимые для развертывания IIS для jQuery?

EDIT # 1

Я хотел бы также отметить, что это использует DatePicker JQuery. Другие поля на странице, которые являются стандартными текстовыми полями, отлично работают.

EDIT # 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 находится в местоположении, доступном для этой страницы, - вы можете проверить, присутствует ли jQuery, тестируя для window.$ (если не существует другого определения для $).

1

Проблема, скорее всего, в приложении ASP.NET фактический идентификатор элемента не является start_date для серверного элемента управления с этим идентификатором. Когда серверный элемент управления находится внутри контейнера, идентификатор контейнера добавляется к идентификатору элемента управления, чтобы сохранить его уникальным.

Вы можете получить сгенерированный идентификатор, используя свойство ClientID:

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

вы используете имя в коде JQuery:

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

или ленивый путь: '$ ('# <% = start_date.ClientID%>'). Val()' –

+1

Я думал, что это может быть, но тогда OP имеет PHP/IIS в названии :) –

+0

Да, извините - это действительно PHP. Хорошая мысль, хотя :) – bugfixr

3

Это просто не возможно особенность Jquery к зависит от вашего выбора веб-сервера.

Возможно, что разные веб-серверы предоставляют разную HTML-разметку в качестве предыдущего плаката, но тогда проблема заключается в том, что вы запускаете jQuery для разных наборов HTML. Сам jQuery выполняется полностью в браузере, что делает только реалистичные различия в браузере.

Я знаю, что это не обнадеживает, я просто хочу, чтобы вы поняли, что лаете не то дерево. :/

0

Вы проверили, что HTML тот же, и что определенно есть элемент (и только один) с идентификатором start_date?

Если это не так, убедитесь, что код jQuery включен правильно. Хорошим тестом является добавление alert('hello') к файлу - если вы получите предупреждение, файл будет включен.

Смежные вопросы