Foros del Web » Programando para Internet » Javascript » Frameworks JS »

GETSCRIPT funciona pero los scripts no, a que se debe...?

Estas en el tema de GETSCRIPT funciona pero los scripts no, a que se debe...? en el foro de Frameworks JS en Foros del Web. En el index.php hago link a 3 scripts.js, cargan bien y funcionan los scripts! pero tengo otras páginas... seccion1.php seccion2.php seccion3.php ... etc Las cargo ...
  #1 (permalink)  
Antiguo 28/08/2010, 17:23
 
Fecha de Ingreso: febrero-2003
Mensajes: 15
Antigüedad: 21 años, 2 meses
Puntos: 1
Exclamación GETSCRIPT funciona pero los scripts no, a que se debe...?

En el index.php hago link a 3 scripts.js, cargan bien y funcionan los scripts!


pero tengo otras páginas...

seccion1.php
seccion2.php
seccion3.php
... etc

Las cargo en un div sin problemas que tengo en el index.php pero
el contenido de seccion2.php necesita funcionar con los scripts que
cargue en el index.php, así que he intentado lo siguiente...

1._ en seccion2.php colocar solo la tabla y su contenido.

2._ le he colocado a seccion2.php las etiquetas <link> y <script> para
cargar los estilos y scripts externos (los mismos que cargaron en index.php).

3._ he utilizado getscript dentro de "success" en el ajax y con un "alert" veo
que si carga, pero los scripts que contiene el scripts.js no hacen efecto. No sé
si cargarlo de nuevo (primero lo llamo en el index.php) entra en conflicto.

4._ el getscript lo probe fuera del $.ajax() pero nada. (mostró el "alert" pero
todo quedo en blanco)


Intenté variando el orden, las rutas y otras formas con otros códigos
pero no consigo resultado completo.


En resumen, cuando cargo el contenido dentro del DIV deseado, un "alert"
me muestra que si carga el script pero un accordeon que tengo en seccion2.php no funciona!!!

El accordeon funciona bien si lo cargo directo desde firefox y IE6, y el contenido
del accordeon carga bien con ajax las otras minisecciones.php, el problema es
cuando todo lo quiero cargar en un DIV.

Código HTML:
index.php

<link rel="stylesheet" type="text/css" href="main.css">
<link rel="stylesheet" type="text/css" href="jquery.custom.css">
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery.ui.min.js"></script>
<script type="text/javascript" src="mi.ajax.js"></script>
<script type="text/javascript" src="otro.js"></script>

<div id="OtroContenidoFuncionaOK">
     El contenido aquí utiliza los scripts que hice y los de
     JQuery perfectamente.
</div>

<!-- este "rel" fue lo que se me ocurrió para diferenciar los enlaces
ya que las clases estan ocupadas -->
<a href="seccion2.php" class="ajaxLinkC" rel="#divTarget">cargar</a>


<div id="CargaExternaAqui">
     Aquí cargo las otras secciones como: seccion2.php (en este caso)
     y funciona el $.ajax()
</div> 

Código:
seccion2.php

<!--

        Tabla con un accordeon adentro, pero no funciona cuando
        lo cargo dentro del DIV, pero si funciona si lo llamo desde
        seccion2.php (con los .css y los .js linkeados claro esta

-->

table width="510" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
  </tr>
  <tr>

    <td> 
             Accordeon de Jquery
            aquí es donde está el problema, sólo cuando se carga con ajax.

    </td>

  </tr>
</table>

Código:
mi.ajax.js

$(".ajaxLinkC").ajaxLink();

(function($){	
	$.fn.ajaxLink = function(options){
		var defaults = {
			dataType	: "html",
			method		: "post",
			cache		: false,
			async		: true,
			beforeSend	: false,
			complete	        : false,
			error		        : false,

			global		: true, 									
			ifModified	        : false,
			processData	: true,
			contentType	: "application/x-www-form-urlencoded"
		};
		
		var options = $.extend(defaults, options);
		
		return this.each(function(){
			$(this).click(function(){
				
				var targetOtro = $(this).attr('rel'); //aquí me traigo el "rel" del enlace.
				
				$.ajax({
					global		: options.global,
					ifModified   	: options.ifModified,
					processData	: options.processData,
					contentType	: options.contentType,
					
					type		        : options.method,
					url		        : $(this).attr('href'),
					dataType 	        : options.dataType,
					cache		: options.cache,
					async		: options.async,
					data		        : $(this).attr('data'),
					beforeSend	: function(){ 
									if(options.beforeSend) options.beforeSend(); 
					},
					complete	: function(XMLHttpReq, textStatus){
									if(options.complete) options.complete(XMLHttpReq, textStatus);
					},
					success		: function(data){
									$.getScript("jquery.min.js");
                                                                        $.getScript("jquery.ui.min.js");
									$.getScript('mi.ajax.js', function(jd) {
										$(targetOtro).html(data);
                                                                                alert('carga correcta'); // si lo muestra.
									});
									
					},
					error		: function (event, request, settings){ 
									if (options.error) options.error(event, request, settings); 
					}
				});
				return false;
			});
		});
	};
})(jQuery);

Bueno, la verdad hasta aquí pude continuar luego de varios días pero
no logro ver que pasa, no sé si el procedimiento para evitar este error
es otro, o si falta algo... he visto varios procedimientos aquí en forosdelweb,
cristallab, la web de jquery, muchas otras en google y aún no logro entender

Quizas hasta es fácil la respuesta pero el ajax es nuevo para mi


Saludos y gracias de antemano
  #2 (permalink)  
Antiguo 28/08/2010, 19:08
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Tema movido desde AJAX
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 29/08/2010, 09:54
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
Respuesta: GETSCRIPT funciona pero los scripts no, a que se debe...?

Es decir que llamas primero un script y luego una pagina html? Pero cuándo inicializas el script? Antes o después de cargar el html? Esa es la cuestión.
  #4 (permalink)  
Antiguo 29/08/2010, 14:07
 
Fecha de Ingreso: febrero-2003
Mensajes: 15
Antigüedad: 21 años, 2 meses
Puntos: 1
Respuesta: GETSCRIPT funciona pero los scripts no, a que se debe...?

En el index linkeo los css y js...

al hacer clic en cualquiera de los enlaces, llamo a una función $.ajax para que me
cargue en un DIV una pagina .php externa, pero esta ultima tiene a su vez llama
a varios scripts que están en los .js del index.php (la principal)

...el problema es que las funciones que llamo desde el .php externo ya cargado
en el index, no funcionan.

Usé el getscript, porque supuestamente cuando cargas con $.ajax(), no se cargan
los .js así que llamé de nuevo con el ajax al .js usando getscript, me salió un "alert"
que coloque dentro del .js para ver si se trajo al .js y sí salió el "alert"

...el problema es que no funciona nada más que ese "alert", las demás funciones no!


Es decir... carga el .js pero no me deja utilizar las funciones que ya tiene dentro del
mismo .js ...que tal?
  #5 (permalink)  
Antiguo 29/08/2010, 14:12
 
Fecha de Ingreso: febrero-2003
Mensajes: 15
Antigüedad: 21 años, 2 meses
Puntos: 1
Respuesta: GETSCRIPT funciona pero los scripts no, a que se debe...?

Por cierto, les comento que no he encontrado una buena solución...

...de momento lo que hice es colocar un llamado a la función dentro de las etiquetas
<script> $.('#miselector').mifuncion(); </script> y este se carga desde el .js linkeado
en el index.php y está funcionando pero la verdad es que no veo que sea la manera
apropiada....

De todos modos lo menciono por si alguien necesita al igual que yo hacerlo funcionar
como sea mientras se encuentra el procedimiento más optimo!

Saludos y espero por sus aportes!!!

Etiquetas: ajax, estilos, getscript, heredar, jquery, scripts
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 23:40.