Newsgroup: it.comp.lang.javascript
Titolo: jQuery e jDatePicker: in locale funziona, da remoto no

Salve a tutto il ng,
vi spiego il mio problema:
in una pagina (chiamiamola page1.php) ho un <div> nel quale carico il
contenuto tramite jQuery in questo modo:
$("document").ready( function() {
    $('#mydiv').load('myfile.php');
});
In myfile.php devo posizionare un paio di istanze del plugin
jDatePicker (vedasi 
http://www.kelvinluck.com/assets/jquery/datePicker/v2/demo/index.html
).
Se testo la faccenda in locale (osX, php 5.3.3) il tutto funziona
benone, mentre sul server non funziona! Ho provato a spostare i vari
<script src='....'></script> necessari al caricamento di jDatePicker
da page1.php al file myfile.php ma non cambia nulla, in locale tutto
va liscio, sul server il calendario non si carica. Ogni tanto, ma non
sempre, la console Javascript di firefox mi mostra l'errore $(".date-
pick").datePicker() is not a function.
Sapete mica dove posso sbattere la testa?

> Sapete mica dove posso sbattere la testa?
che versione di jquery usi?

 sul server non funziona!
Sicuramente la mia è una idea bizzarra, ma...
i file PHP li hai caricati sul server in "modo testo"?
-- 
Saluti
Renato
 

 che versione di jquery usi?
La 1.4.1


Se per "modo testo" intendi modalità ASCII sì, li carico in modo testo.

 jDatePicker (vedasihttp://
www.kelvinluck.com/assets/jquery/datePicker/v2/demo/index.html
).


 l'analisi dello script php.
Ho aggiunto una callback come suggerisci tu, ma non cambia nulla.
In locale tutto liscio, sul server il calendario non compare e c'è il
solito
errore: $(".date-pick").datePicker is not a function
Semplificando al massimo, la struttura è la seguente:
file page1.php (genera l'html)
<html>
<head>
<meta blablabla />
<title>grrrrrr</title>
<script type="text/javascript" src="js/jquery.min-1.4.1.js"></script>
<script type="text/javascript" src="js/date.js"></script>
<!--[if IE]><script type="text/javascript" src="js/
jquery.bgiframe.min.js"></script><![endif]-->
<script type="text/javascript" src="js/jquery.datePicker.js"></script>
<link rel="stylesheet" type="text/css" media="screen" href="css/
jquery.datePicker.css" />
<script type="text/javascript" src="js/functions.js"></script>
</head>
<body>
...
<div id="mydiv"></div>
...
</body>
</html>
file js/functions.js
...
function LoadFile() {
	$("#mydiv").load("myfile.php", function(){ $(".date-
pick").datePicker(); });
}
$("document").ready( function() {
	LoadFile();
});
...
file myfile.php
...
<input class="date-pick" type="text" name="data_in" />
<input class="date-pick" type="text" name="data_out" />
...

 solito errore: $(".date-pick").datePicker is not a function
Hai provato con firebug (ad esempio) a verificare la presenza di tutti i 
file partendo dal codice HTML della pagina interessata?
Se aggiungi all'onload della pagina una chiamata ad una funzione che usi 
$, la vede?

Ci vedo male, mi pare però che manchi UI core che è necessario per
datePicker vedi:
http://docs.jquery.com/UI/Datepicker
dovresti controllare poi, se necessario, osserviamo meglio il codice


 $, la vede?
sì firebug lo tengo sempre attivo e non noto nulla di anomalo.
ho provato a togliere la chiamata a $(".date-pick").datePicker() dal $
("document").ready
e l'ho messa in <body onload=""> risultato: cambia nulla, in locale
funzia, sul server no.
mi sa che è meglio se cambio approccio, magari con un altro tipo di
calendar js...


guarda, è un giorno che son fermo per sta rogna, mi conviene cambiare
approccio sennò il cliente mi si inalbera un po' :P

 approccio sennò il cliente mi si inalbera un po' :P
se ti può essere di consolazione, sia io che un mio ex collega abbiamo 
lo stesso problema! quando lo stesso datepicker l'ho implementato varie 
volte con successo l'anno scorso.
ho paura che ci sia una qualche incompatibilità con le versioni di 
jquery. spero di sbagliarmi.
http://stackoverflow.com/questions/2682259/jquery-ui-datepicker-not-displaying
conta che ho preso questo esempio e l'ho portato nel mio progetto, non 
funziona neanche in locale :(
http://docs.jquery.com/UI/Datepicker#overview-example
sarebbe da chiedere su qualche forum di jquery ui.


eh no non mi consola ;) più che altro perché, come ho detto a Oreste,
io sto usando datePicker (nota la P maiuscola) che non fa parte di
jQuery UI
ma è un plugin a sé, vedi
http://www.kelvinluck.com/assets/jquery/datePicker/v2/demo/index.html
vabbè, ringrazio comunque chi ha perso tempo a rispondermi.
alla prossima!

Non temere dammi un po' di tempo e lo guardo seriamente, ti rispondo
fra un paio d'ore


Va bene, funziona, in basso copio ed incollo il codice, prima però è
bene sapere che all'inizio ho provato con la versione 1.4.4 di jquery
e non funzionava a causa di incompatibilità con jquery.datePicker.js,
la natura esatta dell'incompatibilità non te la sò dire perché non
l'ho cercata, ma questo è un motivo in più per considerare l'uso di
datepicker UI.
L'esperimento che ho effettuato funziona con la versione 1.4.2 di
jquery, di seguito il codice, se hai difficoltà lo pubblico in rete
per osservare il funzionamento, fammi sapere.
Dimenticavo, i file sono html non php.
file principale
-----------------------------------
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd
">
<html xmlns="
http://www.w3.org/1999/xhtml
" xml:lang="en" lang="en">
<head>
<title>grrrrrr</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<script type="text/javascript" charset="UTF-8" src="../js/
jquery-1.4.2.min.js"></script>
<script type="text/javascript" charset="UTF-8" src="../js/date.js"></
script>
<!--[if IE]><script type="text/javascript" charset="UTF-8" src="../js/
jquery.bgiframe.min.js"></script><![endif]-->
<script type="text/javascript" charset="UTF-8" src="../js/
jquery.datePicker.js"></script>
<link rel="stylesheet" type="text/css" media="screen" href="../js/
datePicker.css" />
<script type="text/javascript" charset="UTF-8" src="functions.js"></
script>
</head>
<body>
<div id="mydiv"></div>
</body>
</html>
myfile.html
---------------------------------
<input class="date-pick" type="text" name="data_in" />
<input class="date-pick" type="text" name="data_out" />
functions.js
---------------------------------
function LoadFile() {
var script = document.createElement( 'script' );
script.type = 'text/javascript';
script.src = '
http://localhost/js/jquery.datePicker.js
';
$("#mydiv").append( script );
$.ajax({
url: 'myfile.html',
dataType: 'html',
beforeSend: function(a){},
success: function(b){
$("#mydiv").append(b);
$(".date-pick").datePicker();
},
error: function(a,b,c){alert('Non trovo myfile.html')}
});
}
$(function() {
$(".date-pick").datePicker();
LoadFile();
});
--------------------------------------------------------



Oh pebbacco funziona!
Ho tenuto la 1.4.1 ma ripeto, funziona... Forse l'inghippo era
nell'uso
di $("#mydiv").load() piuttosto che di $.ajax(). mah...
per la cronaca, ho tolto le righe che caricano nel DOM lo script .js,
funziona anche senza.
Che dire... mille volte grazie!