Ver Mensaje Individual
  #1 (permalink)  
Antiguo 28/08/2010, 17:23
EFranz
 
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