Jump to content


Photo

Http.Open


  • Faça o login para participar
6 replies to this topic

#1 id4689

id4689

    Turista

  • Usuários
  • 49 posts
  • Sexo:Não informado

Posted 26/11/2011, 11:55

Olá, estou fazendo uma busca automatica que ao colocar uma letra já faz a busca

estou usando esse script e gostaria que alguém me esclarece algumas dúvidas...

 <script>
  function createObject() {
var request_type;
var browser = navigator.appName;
if(browser == "Microsoft Internet Explorer"){
request_type = new ActiveXObject("Microsoft.XMLHTTP");
} else {
request_type = new XMLHttpRequest();
}
return request_type;
}

var http = createObject();

/* -------------------------- */
/* SEARCH */
/* -------------------------- */
function searchNameq() {
inputBox = encodeURI(document.getElementById('inputBox').value);
document.getElementById('msg').style.display = "block";

if (inputBox == "") {
$(function(){ 
$('#closeSearch').click();});  
$(function(){ 
$('#closeSearch').click();});  
}
else
{	
//document.getElementById('msg').innerHTML = "Searching for <strong>" + inputBox+"";
// Set te random number to add to URL request
document.getElementById('searchButton').click();
nocache = Math.random();
http.open('get', 'search.php?q='+inputBox+'&nocache = '+nocache); // aqui é o parametro passado por GET
http.onreadystatechange = searchNameqReply;
http.send(null);
}
function searchNameqReply() {
if(http.readyState == 4){
	
var response = http.responseText;
document.getElementById('search-result').innerHTML = response;
//alert(response);
}
}
}

</script>

olhando o script acima vc pode analisar que é buscado o conteúdo de outra página e armazenado na variavel response certo ?
da variavel response para a <div id="search-result">

ai que tá olha só, vamos supor que o conteúdo da outra página é apenas a palavra OI


eu faço assim

<div id="search-result">
</div>

continuação da página


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

Porque após a div não é mostrado nada ? para na palavra OI e não mostra mais nada ?

e porque também se o conteúdo da div for <script>alert("teste");</script>

não exibe o alerta ?

#2 LeoB

LeoB

    Super Veterano

  • Usuários
  • 1876 posts
  • Sexo:Masculino
  • Interesses:Programação

Posted 26/11/2011, 12:15

O primeiro problema deve ser algum erro no sintaxe no seu HTML. Não é pra parar nessa div. O segundo problema nem é um problema. É assim mesmo. O javascript é interpretado no carregamento da página. Nessa situação a página já está carregada. Não vai rodar.

#3 id4689

id4689

    Turista

  • Usuários
  • 49 posts
  • Sexo:Não informado

Posted 26/11/2011, 14:34

estou quase desistindo de usar o tooltip, eu até consegui usar mais chamando por assim veja:

<script>
var tooltip=function(){
	var id = 'tt';
	var top = 3;
	var left = 3;
	var maxw = 300;
	var speed = 10;
	var timer = 20;
	var endalpha = 95;
	var alpha = 0;
	var tt,t,c,b,h;
	var ie = document.all ? true : false;
	return{
		show:function(v,w){
			if(tt == null){
				tt = document.createElement('div');
				tt.setAttribute('id',id);
				t = document.createElement('div');
				t.setAttribute('id',id + 'top');
				c = document.createElement('div');
				c.setAttribute('id',id + 'cont');
				b = document.createElement('div');
				b.setAttribute('id',id + 'bot');
				tt.appendChild(t);
				tt.appendChild(c);
				tt.appendChild(<img src='http://forum.wmonline.com.br/public/style_emoticons/<#EMO_DIR#>/cool.gif' class='bbc_emoticon' alt='B)' />;
				document.body.appendChild(tt);
				tt.style.opacity = 0;
				tt.style.filter = 'alpha(opacity=0)';
				document.onmousemove = this.pos;
			}
			tt.style.display = 'block';
			c.innerHTML = v;
			tt.style.width = w ? w + 'px' : 'auto';
			if(!w && ie){
				t.style.display = 'none';
				b.style.display = 'none';
				tt.style.width = tt.offsetWidth;
				t.style.display = 'block';
				b.style.display = 'block';
			}
			if(tt.offsetWidth > maxw){tt.style.width = maxw + 'px'}
			h = parseInt(tt.offsetHeight) + top;
			clearInterval(tt.timer);
			tt.timer = setInterval(function(){tooltip.fade(1)},timer);
		},
		pos:function(e){
			var u = ie ? event.clientY + document.documentElement.scrollTop : e.pageY;
			var l = ie ? event.clientX + document.documentElement.scrollLeft : e.pageX;
			tt.style.top = (u - h) + 'px';
			tt.style.left = (l + left) + 'px';
		},
		fade:function(d){
			var a = alpha;
			if((a != endalpha && d == 1) || (a != 0 && d == -1)){
				var i = speed;
				if(endalpha - a < speed && d == 1){
					i = endalpha - a;
				}else if(alpha < speed && d == -1){
					i = a;
				}
				alpha = a + (i * d);
				tt.style.opacity = alpha * .01;
				tt.style.filter = 'alpha(opacity=' + alpha + ')';
			}else{
				clearInterval(tt.timer);
				if(d == -1){tt.style.display = 'none'}
			}
		},
		hide:function(){
			clearInterval(tt.timer);
			tt.timer = setInterval(function(){tooltip.fade(-1)},timer);
		}
	};
}();
</script>

ae para chamar

<span class="hotspot" onmouseover="tooltip.show(' legenda tooltip ');"onmouseout="tooltip.hide();">...</span>";

po maneiro funciona, mais queria usar os tooltip do jquery..
como vc disse o javascript só funciona quando é carregado a página sendo assim a div não carrega


tooltip jquery:

<script type="text/javascript">
$(function() {

$("#fancy, #fancy2").tooltip({
	track: true,
	delay: 0,
	showURL: false,
	fixPNG: true,
	showBody: " - ",
	extraClass: "pretty fancy",
	top: -15,
	left: 5
});


});
</script>

<legend><span id="fancy" title="frase a ser exibida">Testando</span> </legend>

colocando apenas a legenda assim não funciona, como chamar isso dentro da div ?

Edição feita por: id4689, 26/11/2011, 14:38.


#4 LeoB

LeoB

    Super Veterano

  • Usuários
  • 1876 posts
  • Sexo:Masculino
  • Interesses:Programação

Posted 26/11/2011, 14:58

Coloca na função que carrega o conteúdo, depois de

document.getElementById('search-result').innerHTML = response;


#5 id4689

id4689

    Turista

  • Usuários
  • 49 posts
  • Sexo:Não informado

Posted 26/01/2012, 08:21

LeoB, funcionou aqui.

agora estou tentando usar essa função para outro fim dentro dentro um for e
armazenar o response dentro de um array porque o resultado do request é pequeno...
mais em um for de 4 round só pega o request uma vez porque ? olha:

    <script>
    var 
    string = document.getElementsByTagName('string');	
    meuarray = new Array();
    
    function createObject() {
    var request_type;
    var browser = navigator.appName;
    if(browser == "Microsoft Internet Explorer"){
    request_type = new ActiveXObject("Microsoft.XMLHTTP");
    } else {
    request_type = new XMLHttpRequest();
    }
    return request_type;
    }
    var http = createObject();
    
    function searchNameq() {
    
    nocache = Math.random();
    http.open('get', 'request.php?js=PARAMETRO&nocache='+nocache); // aqui é o parametro passado por GET
    http.onreadystatechange = searchNameqReply;
    http.send(null);
    
    function searchNameqReply() {
    if(http.readyState == 4){
            
    var response = http.responseText;
    alert(response);
    alert(meuarray.length);
    }
    }
    }
    //LOOP
    for (var i=0; i<4; i++){
    searchNameq(); 
    }
</script>


#6 id4689

id4689

    Turista

  • Usuários
  • 49 posts
  • Sexo:Não informado

Posted 28/01/2012, 23:36

já resolvi, usei a biblioteca prototype.js e fis um ajax.request...
thank you

#7 Karris Neuman

Karris Neuman

    Novato no fórum

  • Usuários
  • 5 posts
  • Sexo:Masculino
  • Localidade:uk

Posted 15/02/2012, 14:06

muito bom, até você! Posted Image




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq