Ir para conteúdo
Fórum Script Brasil
  • 0

Php + Ajax


Kutxitxo

Pergunta

Olá pessoal! É meu primeiro post aqui no forum e já tentei procurar em vários foruns e no google e não consegui achar a solução para meu problema.

É o seguinte:

Tenho um script ajax para carregar o conteudo dinamicamente, porém as páginas do conteúdo seriam .php!

Meu código ajax é esse:

try{
xmlhttp = new XMLHttpRequest();
}catch(ee){
try{
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
}catch(e){
try{
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}catch(E){
xmlhttp = false;
}
}
}

atual=0
function carrega(n){
    //Exibe o texto carregando no div conteúdo
    var conteudo=document.getElementById("conteudo")
    conteudo.innerHTML='<div class="carregando">Carregando...</div>'
    //Guarda a página escolhida na variável atual
    atual=n
    //Abre a url
    xmlhttp.open("GET", "ajax.php?n="+n,true);
    //Executada quando o navegador obtiver o código
    xmlhttp.onreadystatechange=function() {
    if (xmlhttp.readyState==4){
        //Lê o texto
        var texto=xmlhttp.responseText
        //Desfaz o urlencode
        texto=texto.replace(/\+/g," ")
        texto=unescape(texto)
        //Exibe o texto no div conteúdo
        var conteudo=document.getElementById("conteudo")
        conteudo.innerHTML=texto
    }
}
xmlhttp.send(null)
}
function menuclick(e){
//Correção para eventos quebrados da Microsoft
if(typeof(e)=='undefined')var e=window.event
source=e.target?e.target:e.srcElement
//Correção para o bug do Konqueror/Safari
if(source.nodeType==3)source=source.parentNode
//Obtém o número quebrando a url
n=source.getAttribute("href").replace(/.*=/g,"")
//Chama o carrega
carrega(parseInt(n))
//Cancela o click (evita a navegação)
return false
}
function init(){
//Obtém os links do menu
var links=document.getElementsByClass("ajax")
//Atribui o evento
for(var i=0;i<links.length;i++)
    links[i].onclick=menuclick
}
if(xmlhttp)window.onload=init
E o ajax.php é assim:
function leconteudo($n){
return file_get_contents("listar.php?cat=$n");
}
if(isset($_GET["n"])){
    $t=leconteudo($_GET["n"]);
    echo(urlencode($t));
}

Então, quando meus links pedem pra carregar uma página php acontece erros e se tentar passar variáveis via get, ele tenta procurar o arquivo inteiro por ex:

Warning: file_get_contents(listar.php?cat=1) [function.file-get-contents]: failed to open stream: Invalid argument in C:\Program Files (x86)\EasyPHP 2.0b1\www\MDR\php\ajax.php on line 10

Alguma solução? q.w

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

$n vem de onde?

Quem é listar.php ?

Qual é a linha 10 do arquivo ajax.php ?

Abraços!

Link para o comentário
Compartilhar em outros sites

  • 0

lendo o codigo nota-se q $n é a variavel i q é passada no link, pois o ajax.js faz contato com o ajax.php via ajax;php?n=

o listar, não importa, é qualquer arquivo php entende, q eu desejo passar uma variavel via get, por ex: arquivo.php?variavel=valor

a linha 10 é o file_get_contents!

Preciso d ajuda =/

Link para o comentário
Compartilhar em outros sites

  • 0

Ah sim, desculpe.

Bom, veja que file_get_contents abre um arquivo, e não envia nenhum GET para ele. Tu estás misturando HTTP com arquivos do servidor.

Segundo o manual a file_get_contents lê um arquivo inteiro do servidor enquanto a fopen abre um arquivo ou URL.

Espero ter ajudado.

Link para o comentário
Compartilhar em outros sites

  • 0

Sim, a parte do file_get_contents eu entendi!

já ajudou sim, porém agora com o fopen e fread, estou tendo um problema!

function leconteudo($n){
$filename = "listar.php?cat=$n";
$handle = fopen ($filename, "r");
$conteudo = fread ($handle, filesize($filename));
fclose ($handle);

return $conteudo;
}

Se eu listar como está acima, ele n abre! OK! porque ele reconhece como arquivo!

Porém, se eu botar o caminho http:// ele abre o arquivo mas na opcao fread n consegue pegar o filesize e n consegue ler!

existe alguma outra opcao alem do fread para ler o conteudo do arquivo em uma string?

Link para o comentário
Compartilhar em outros sites

  • 0

Manual PHP do fread:

Leia "Example #3 Remote fread() examples"

http://br.php.net/manual/en/function.fread.php

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...