Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

VitorSC

[Resolvido] Problema ao executar javascript na requsição

Recommended Posts

Boa noite pessoal,

 

Pesquisei no tópico sobre ajax e não encontrei nada a respeito.

Bom eu estou montando um guia de buscas, e ao clicar na foto ou descrição da empresa eu faço uma chamada com jquery para um arquivo php onde retorno um html, isso utilizando colorbox para ficar no estilo modal.Até ai tudo bem estou fazendo buscas do banco de dados retornando os valores dinamicamente show de bola, porém tive a ideia de deixar algo mais legal então resolvi colocar em um pequeno espaço dentro dessa janela modal uma div que irá conter o mapa marcado pelo google maps dinamicamente para cada empresa óbvio. Funcionou show de bola passo os parametros de laitude e longitude e retorno o esquema na div com o mapa do sujeito. O problema está quando o cara clica uma vez aparece legal, só que ao requisitar o mesmo ajax clicando novamente na foto da empresa essa div fica meio torta é como se fosse que não carregasse o conteúdo certo, pois o javascript esta dentro do arquivo.php que contém os dados para dar retorno pois é dinâmico e a div tbm está ali dentro onde contém o mapa, pois se eu testo fora do ajax e fico dando f5 sempre atualiza os dados e vem marcado no mesmo lugar, agora com o ajax só funciona na primeira vez, mas conferi a latitude etc e estão la certinho, pensei que seria cache então eu tirei o controle de cache com as meta tag e nada mudou. ai eu tive uma ideia de quando receber o retorno da requisição dessa colorbox modal, eu setar um innerHTML na div com o script fora do ajax mas não consigo saber se deu sucess por exemplo pois a chamada é feita apenas pelo colorbox não existe uma requisição usando o .$ajax do jQuery de fato.

Detalhe a versão da api que estou usando do google é a v3.

 

Exemplo do fonte:

 

parte da requisição pelo colorbox através da classe:

 

//no cliente  
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>

jQuery(".sobre_post").colorbox({escKey:false,overlayClose:false,scrolling:false,width:"780px",height:"400px"});	

 

//no servidor na requsição
<?php
header("Cache-Control: no-cache, must-revalidate");
// Data no passado
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");		
?>
exemplo do javascript que executo no servidor antes de enviar a resposta

<script type="text/javascript">  
	latlng = new google.maps.LatLng(-27.054081023256,-49.51508748139535);				
	var myOptions = 
	{
		zoom: 18,
		center: latlng,
		mapTypeId: google.maps.MapTypeId.SATELLITE 
	};

	var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);		
	var marker = new google.maps.Marker({		
		  position: latlng,
		  map: map
	});

</script>

<php
$html = "<table>
          <tr>
     <td style='text-align:center;vertical-align:center;'>								
 	       <div class='resultado'>
	         <div id='map_canvas'></div>
       </div>
     </td>
   </tr>
       </table>";


echo $html; 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom pessoal, ví que ninguém respondeu, mas consegui resolver o problema com uns gringos auhauahuah, no onComplete do colorbox eu seto os valores ai funcionou corretamente, até.

:thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vitor tudo bem? Eu li seu post e percebi que você manja bastante sobre AJAX, pois bem, eu to fazendo um site para uma banda de Rock, e eles precisam de um player continuo, o site esta sendo feito em joomla, ou seja PHP, entao eu instalei um plugin AJAX que carrega o conteudo do site sem refresh, até tudo perfeito, mas quando a pagina carrega com os modulos, os javascripts nao funcionam, perdem formatação e a funcionalidade. Gostaria de saber como faço para carregar esse javascripts em um site dinamico, e se e possivel você dar uma olhada (no esboço que criei so para teste com ajax) o endereço é o seguinte

 

http://oportunidadelitoral.co.cc/maraberto/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa tudo certo? Não sei se entendi bem o que você quer mas para inserir javascript dinamicamente no documento com ajax:

 

url = "http://site com codigo js.com/js.ja";

http = (window.XMLHttpRequest) ? new window.XMLHttpRequest : new ActiveXObject("MSXML2.XMLHTTP.3.0"); // inicializar variável

http.open("GET", url, true); // iniciar a requisição

http.onreadystatechange = function() // ao receber os dados

{

if(http.readyState == 4 && http.status == 200)

{

eval( http.responseText); // executar o código

}

}

http.send(null); // enviar requisição

 

 

-------------------

 

Mas se você quiser criar campos dinamicamente pode usar jquery nesse site tem um tuto bem explicativo -> http://www.davidchc.com.br/tutoriais/javascript/adicionar-elementos-dinamicamente-relacionados-com-jquery/

 

Qualquer coisa tamos ae, valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa, primeiramente obrigado por responder minha pergunta. Bom vou tentar ser mais claro, esse site que to fazendo, estou usando ajax para abrir o conteudo. So que os modulos que abrem dentro do conteudo possum javascripts e não estão sendo feita as requisições do mesmos depois que o ajax carrega o conteudo. Estou usando o joomla para fazer esse site, então precisaria fazer com que os scripts de todos os modulos fossem carregados dinamicamente nas respectivas paginas nas quais eles abrem, ou seja, Pagina de fotos, carregar script do lightbox, pagina de video, carregar js do video, e assim por diante, você saberia como fazer isso, e aonde eu tenho que inserir o codigo caso você saiba me responder essa duvida? Agradeço mais uma vez sua ajuda Vitor e de grande valia pra mim isso, abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa noite desculpe pela demora para postar é que estou meio ferrado,

bom uma maneira de inserir o javascript é de passar parametros para sua requisição ajax e adicionar o script no corpo

 

assim:

 

<script type="text/javascript">

(function(){

var bsa = document.createElement('script');

bsa.type = 'text/javascript';

bsa.async = true;

bsa.src = '/caminhodoarquivo/arquivo.js';

(document.getElementsByTagName('head')[0]||document.getElementsByTagName('body')[0]).appendChild(bsa);

})();

</script>

 

Como não trabalho com joomla não sei como resolver especificamente com joomla mas com php e javascript puro eu trato dessa maneira ou de tantas outras que achar melhor em cada requisição diferente passe parâmetros de qual módulo você está, em seguida trate para inserir o javascript de acordo com o valor recebido do parâmetro do ajax

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.