2009-12-03 4 views
0

J'ai une page qui utilise jQuery.jQuery - .val() fonctionne très bien dans php/apache, mais pas si bien sur php/iis

$("#start_date").val() 

Le code ci-dessus renvoie la valeur d'une boîte très bien sur le serveur Apache. Cependant, dans IIS, il renvoie "non défini".

Existe-t-il des considérations d'installation spéciales nécessaires pour un déploiement IIS de jQuery?

EDIT # 1

Je pourrais aussi souligner que cela utilise le datepicker jQuery. Les autres champs de la page qui ne sont que des zones de texte standard fonctionnent bien.

EDIT # 2

Ok, donc je plissant cette baisse un peu plus. La balise pour cette date est définie comme ceci:

id="add_start_date" name="start_date" 

Quand je change à ceci:

id="start_date" name="start_date" 

Il fonctionne très bien. Pourquoi la différence entre les serveurs? Il ne semble pas que cela devrait faire la moindre différence.

+0

Il ne devrait pas y avoir si les fichiers sont exactement les mêmes, à moins que l'IIS bloqué les fichiers js, mais alors vous devriez recevoir un autre message d'erreur. –

+0

BTW, vous pouvez utiliser '$ (" # start_date "). Datepicker ('getdate');' pour obtenir la date dans l'entrée datepicker. –

+0

Une chance d'obtenir un lien public? –

Répondre

1

Jetez un oeil à la source générée à partir de votre serveur Apache et comparez-la à la source générée à partir du serveur IIS. Aussi, voyez si vous pouvez utiliser un navigateur WebKit (Safari ou Chrome) ou peut-être Firefox pour voir si les fichiers JavaScript sont en cours de transfert.

1

Assurez-vous que le fichier de script jQuery se trouve dans un emplacement accessible à la page. Vous pouvez vérifier si jQuery est présent en testant window.$ (en supposant qu'il n'existe aucune autre définition pour $).

1

Le problème est très probablement que dans une application ASP.NET, l'ID de l'élément n'est pas start_date pour un contrôle serveur avec cet ID. Lorsqu'un contrôle serveur se trouve dans un conteneur, l'ID du conteneur est ajouté à l'ID de contrôle pour le conserver unique.

Vous pouvez obtenir l'identifiant généré en utilisant la propriété ClientID:

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

Le vous utilisez le nom dans le code jQuery:

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

ou la manière paresseuse: '$ ('# <% = start_date.ClientID%>'). Val()' –

+1

Je pensais que ce pourrait être cela, mais alors l'OP a PHP/IIS dans le titre :) –

+0

Yep, désolé - c'est en effet PHP. Belle pensée cependant :) – bugfixr

3

Il est tout simplement impossible pour une caractéristique de jQuery dépend de votre choix de serveur Web.

Il est possible que différents serveurs Web fournissent un balisage HTML différent, comme suggéré précédemment, mais le problème est que vous utilisez jQuery avec différents ensembles de HTML. jQuery lui-même est entièrement exécuté dans le navigateur en faisant les seules différences réalistes basées sur le navigateur.

Je sais que ce n'est pas rassurant, je veux juste que vous réalisiez que vous aboyer le mauvais arbre. :/

0

Avez-vous vérifié que le code HTML est le même et qu'il y a certainement un élément (et un seul) avec un ID de start_date?

Si ce n'est pas le cas, assurez-vous que le code jQuery est correctement inclus. Un bon test consiste à ajouter alert('hello') au fichier - si vous obtenez l'alerte, le fichier est inclus.

Questions connexes