.load() JQuery não funciona do Chrome

Estou estudando JQuery e vi um post falando sobre navegação ajax.
Basicamente o script troca o conteudo de uma div na pagina sem precisar recarregar toda a pagina.
segue abaixo o codigo:

teste.html

<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="menu.js"></script>
</head>
<body id="index">
<div id="geral">
	<div id="top">
		<ul id="menu">
			<li><a href="a.html">pagina a</a></li>
			<li><a href="b.html">pagina b</a></li>
		</ul>
	</div>
	<div id="conteudo"></div>
</div>
</body>
</html>

menu.js

var home = "a.html"
 
$(function(){
	navegar(home);
	atribuir();
})
 
atribuir = function() {
	$("ul#menu li a").click(function(){
		navegar($(this).attr("href"));
 
		return false;
	})
}
 
navegar = function(pagina) {
	$("#conteudo").load( pagina );		
}

a.html

<html>
<body>
pagina a
</body>
</html>

b.html

<html>
<body>
pagina b
</body>
</html>

no IE e no firefox funcionam bem mas no Chrome não vai.
pesquisei varios fóruns e não encontrei a solução.
por favor peço a ajuda de vcs.

ok, primeiro eu achei isto mas não sei se entra totalmente no problema

http://groups.google.com/group/jquery-en/msg/14925da1b4540acd?pli=1

Veja se vc pode debugar o problema assim:

$("#success").load("/pagina.html", function(response, status, xhr) { if (status == "error") { var msg = "Sorry but there was an error: "; alert(msg + xhr.status + " " + xhr.statusText); } });

e veja se o mesmo ocorre no safari.

peczenyj muito obrigado.

ajudou muito. acho que o problema está mesmo no browser e não tem solução.
tentei os seguintes codigos:
usando prototype.js

var ajax = new Ajax.Updater('load', pagina, {
            method: 'get',
            onComplete: function(transport){
                var response = transport.responseText || 'não achou...';
                document.getElementById('conteudo').innerHTML = response; 
            },
            onCreate: function(response){
                response.transport.overrideMimeType("text/html; charset=UTF-8");
            },
            onFailure: function(){
                alert('erro...')
            }
        });

usando jquery.js

var ajax = $.ajax({ type:"GET",url:pagina,dataType:"html",async: true});		 
ajax.setRequestHeader('Content-Type', "text/html");		 
document.getElementById('conteudo').innerHTML = ajax.responseText;

usando js puro

var ajax2 = new XMLHttpRequest();
var loc = location.href.substr(0, location.href.lastIndexOf("/")+1);
pagina = loc + pagina;
ajax2.open("get", pagina , true );
ajax2.setRequestHeader('Content-Type', "text/html;charset=UTF-8");
ajax2.send('');
var conteudo = ajax2.responseText;
document.getElementById('conteudo').innerHTML = conteudo;

tentei variações com base nesses codigos, mudar e acrescentar parametros aos metodos.
o problema que tenho no safari é INVALID_STATE_ERR: DOM Exception 11
não sei como resolver.
:frowning:

e se vc remover as tags html dessas 2 paginas? ele carrega?

Talvez vc náo consiga colocar um novo ou dentro do body… estou fazendo uma paginação ajax e uso justamente o load do jquery e funciona 100%

peczenyj não funcionou tirando as tags e

o erro está acontecendo nesse metodo

ajax2.open("get", pagina , true ); 

testei no opera e também não vai. ele também deve ser baseado no webkit.
por enquanto a solução de contorno foi essa:

navegar = function(pagina){
    if ($.browser.safari || $.browser.webkit || $.browser.opera) {
         alert("Sorry, your browser don't support AJAX...redirect...");       
    }
    else {
        $("#conteudo").load(pagina);        
    }    
}

voce poderia postar um exemplo de navegação ajax que funcione ?

Utilizo o .load() extensivamente e funciona em todos os navegadores. Não sei se isso resolve mas costumo colocar todo o meu código jQuery dentro do seguinte bloco

Reparei que o seu está diferente. O único problema que eu tive foi no IE em que ele mantinha o conteúdo anterior da div mesmo depois do load, por causa do cache, o que resolvi adicionando um parâmetro na URL da requisição com a hora atual

olá GouverMXT

coloquei todo o codigo dentro de um bloco

$(function($) { }); 

e ficou assim

 var home = "a.html"  
   
 $(function($) {   
     navegar(home);  
     atribuir();  
  
   
	atribuir = function() {  
		$("ul#menu li a").click(function(){  
			navegar($(this).attr("href"));  
   
			return false;  
		})  
	}  
   
	navegar = function(pagina) {  
		$("#conteudo").load( pagina ); 
	 
	} 
 }); 

o problema agora é que ele redireciona a pagina em vez de substituir o conteudo da div.

por favor, voce pode colar o codigo que coloquei na abertura do topico e tentar simular o erro ? talves voce enxergue algo que eu não estou conseguindo ver.
:idea:

para estas situações eu uso live

http://api.jquery.com/live/

peczenyj e GouverMXT

vi que o metodo .html troca o conteudo da div.
só falta agora ler o html e passra pra uma variavel.

navegar = function(pagina) {    
    $("#conteudo").html( pagina );   
  
}  

Tava com o mesmo problema…

Eu tava testando com um arquivo local…tipo:

file:///C:/Users/Alan/Desktop/testeDoLoad.html.

No Firefox, I.E. e Opera funciona, mas no Chrome não. Aih coloquei num servidor de testes e deu certo!! :smiley:

ex: http://localhost:8085/site/testeDoLoad.html

Talvez isso possa te ajudar…

eu ja ia abrir um topico por causa do chrome, notei que varios componentes do primefaces nao funcionam bem com ele é uma pena, porque eu gostei do chrome :frowning: :frowning:

estou com o msm problema!!! :frowning:

A solução que eu citei acima não resolve?

navegar = function(pagina){
if ($.browser.safari || $.browser.webkit || $.browser.opera) {
alert(“Sorry, your browser don’t support AJAX…redirect…”);
}
else {
$("#conteudo").load(“pagina”,{parametro_post:algum_parametro_post});
}
}

Ola a todos…também estava utilzando o código citado no inicio e não consegui que funcionasse no chrom… daí pesquisei em vários posts e também observei várias declarações semelhantes as nossas…

então pude ver também que logo depois do tutorial ensinado a como executar esse código muitas pessoas conseguiram rodar em todos os navegadores… sem exeção!

O fato é que esses programadores estavam

a executar o código em um servidor, apenas essa diferença nos faz chegar a conclusão de que o problema não está relacionado com o código nem com o

navegador, e sim com as formas de se executar o script. Ao meu ver talvez seja por questões de padrão de segurança de cada “navegador” em relação a execução de scripts.

Como não entendo ainda sobre essas questões e estou a começar cm programação, resovi instalar um servidor PHP para testes.
o que eu utilizei foi o EasyPHP e o código em questão funciounou em todos os navegadores sem alterações no script!
bom essa foi minha conclusão, não consegui de outra forma.

Infelizmente pelo visto os navegadores ( Google Chrome e Opera ) não suportam mesmo estas funções do JQuery.

Vou pesquisar algo que possa ser alternativo a isto.

Alguém descobriu o porque não roda local no chrome e no Opera esse script??? Uma explicação de verdade…?

/// PRONTO 100% FUNCIONANDO BLZ!

VEJAM O SEGUINTE : Meu velho veja bem eu estou tentado realizar a multiplicação entre duas matrizes 9x9: matrizMK e a matrizK.inverse().
Contudo a palavra fica com sublinhado vermelho(erro), e a mensagem quando compila é a seguinte: Exception in thread ?main? java.lang.RuntimeException: Uncompilable source code ? Erroneous sym type: Array.inverse.

Como faço para multiplicar a matrizMK com a Inversa da matrizK???
O CÓDIGO:

public static void main(String[] args) {

double[][] matrizMK = {{65,57,36,20,77,155,35,83,165},{90,10,15,76,25,107,13,47,193},{57,36,3,0,101,85,7,121,139},
{27,54,66,18,46,25,62,131,41},{68,47,33,48,6,131,126,24,162},{62,41,99,70,79,105,3,86,137},{14,77,60,76,6,138,98,126,13},
{25,73,78,50,54,113,40,143,41},{9,2,36,0,11,0,0,0,18}};

double [][] matrizK = {{1,0,0,0,0,0,0,0,2},{0,2,3,0,0,0,0,0,0},{0,0,3,0,1,0,0,0,0},{0,0,0,4,0,5,0,0,0},
{0,0,0,0,5,0,0,6,0},{0,3,0,0,0,6,0,0,1},{0,0,0,0,0,0,7,1,0},{1,0,0,2,0,0,3,8,0},{4,0,0,0,0,1,0,0,9}};

//int aux = 0;

System.out.println(?MATRIZ Recebida:?);
Matrix matriz=new Matrix(matrizMK);
matriz.print(5,0);

System.out.println(?MATRIZ chave publica?);
Matrix chave= new Matrix(matrizK);
chave.print(5,0);

System.out.println(?MATRIZ INVERSA da chave pública?);
Matrix inversa= new Matrix(matrizK).inverse();
inversa.print(5,0);

// PRODUTO DAS MATRIZES MK E MatrizK.inverse()

int row, column, i;
double aux;
double c[][] = new double[matrizMK.length][matrizK.inverse()[0].length];
for (row = 0; row < c.length; row++) // multiplicação das matrizes
{

for (column = 0; column < c[row].length; column++) {
aux = 0;
for (i = 0; i < matrizMK[row].length; i++) {
try {
aux = aux + matrizMK[row][i] * matrizK.inverse()[i][column];
} catch (Exception e) {
e.printStackTrace();
}
} c[row][column] = aux;
}
}
// define matriz produto
Matrix matrizProduto = new Matrix©;
System.out.println(“Produtoatriz MK com a matriz Inversa”);
matrizProduto.print(5,0);
}

}

Galera gostaria que alguém pudesse me responder o mais breve possível. Agradeço