* Combinatie van Ajax en Php EN de responseText variabel Voeg antwoord toe Volg

Status
Niet open voor verdere reacties.

TURKGun86

Gebruiker
Lid geworden
21 feb 2008
Berichten
14
Hallo allemaal,

Ik probeer een applicatie te maken waarin Ajax/Javascript en Php tegelijkertijd wordt gebruikt.

De object welke ik gebruik heet httpObject(van class XMLHttpRequest). De aanroep/call is de combinatie van de httpObject-object en de responseText-variabel.
De responseText-variabel returnt een string, waarin de gehele html document(alle codes) wordt geprint(de echo($_GET['bbb']) wordt ook succesvol geprint).

Het probleem is dat de gehele html codes worden uitgevoerd. Ik wil alleen de inhoud van de <div id='baslangic'>-Tag naar de <div id="outputText">-Tag sturen. Hiervoor heb ik geprobeerd de string(gekregen uit responseText) te delen in kleine stukken(en daarna 1 stukje te printen naar de <div id="outputText">-Tag), maar wanneer ik de indexOf() en substr() probeer te gebruiken, lukt het niet. Weet iemand wat hier verkeerd is, of hebben jullie een ander oplossing?

Groeten

[JS]

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>



<body>
<div id='baslangic'>
<?php
echo($_GET['bbb']);
?>
</div>

<script language="javascript" type="text/javascript">

<!--

function getHTTPObject(){

if (window.ActiveXObject) return new ActiveXObject("Microsoft.XMLHTTP");

else if (window.XMLHttpRequest) {
return new XMLHttpRequest();
http_request.overrideMimeType('text/html');
}

else {

alert("Your browser does not support AJAX.");

return null;

}
}




function setOutput(){

if(httpObject.readyState == 4){

var bdy_text = httpObject.responseText;

document.getElementById('outputText').innerHTML = bdy_text;

}

}




function doWork(){

httpObject = getHTTPObject();

if (httpObject != null) {

httpObject.open("GET", "san2.php?bbb=" + document.getElementById('inputText').value, true);

httpObject.send(null);

httpObject.onreadystatechange = setOutput;

}

}



var httpObject = null;


//-->

</script>




<form name="testForm">
Input text: <input type="text" onkeyup="doWork();" name="inputText" id="inputText" /> <br /><br />

Output text: <div id="outputText"></div>
</form>




</body>
</html>


[/JS]
 
Laatst bewerkt:
Hoi,


Je refereert naar document (met document.getElementById('...')). Echter, die bestaat niet; je pagina is niet valide HTML; er zit niet eens een <body> tag in! Dus als je eerst eens een validerende pagina maakt (<doctype, <head, <body, etcetera) zou het wel kunnen werken.



:thumb:
 
Even uit de losse pols, geen idee of dit kan:

[JS]
document.getElementById('outputText').innerHTML = httpObject.responseXML.getElementById( 'baslangic' ).innerHTML;
[/JS]
 
Bedankt voor de reacties. Ik had opzettelijk de onnodige html tags zoals de body tag weggelaten, voor de duidelijkheid.

Beide

[JS]document.getElementById('outputText').innerHTML = httpObject.responseXML.getElementById( 'baslangic' ).innerHTML;[/JS]

en

[JS]document.getElementById('outputText').innerHTML = httpObject.responseText.getElementById( 'baslangic' ).innerHTML;[/JS]

lukken niet.
 
Bedankt voor de reacties. Ik had opzettelijk de onnodige html tags zoals de body tag weggelaten, voor de duidelijkheid.
Heb je dan toevallig een voorbeeldje online, of de volledige source?
 
Heb je dan toevallig een voorbeeldje online, of de volledige source?

Ja, ik had gisteren de eerste post in de topic bewerkt en de volledige code gezet. De volledige code kan je zien in de eerste post.
 
Laatst bewerkt:
Hoi,


je hebt nogsteeds niet de inhoud van san2.php gegeven, maargoed. Dit is mn testopstelling: san2.php bevat de html-echo van hmn website. Dan is dit mn code:[JS]
function setOutput(){

if(httpObject.readyState == 4){

var bdy_text = httpObject.responseText;


var from = bdy_text.indexOf("<article class='noin'>");

var to = bdy_text.indexOf("</article>");






document.getElementById('outputText').innerHTML = bdy_text.substring(from, to);

}

}
[/JS]
en krijg ik netjes de lijst met artikelen!


Dus je zult eventjes moeten laten zien wat de inhoud van san2.php is, OF zelf even klooien met indexOf en substring.



:thumb:
 
Hoi,


je hebt nogsteeds niet de inhoud van san2.php gegeven, maargoed. Dit is mn testopstelling: san2.php bevat de html-echo van hmn website. Dan is dit mn code:[JS]
function setOutput(){

if(httpObject.readyState == 4){

var bdy_text = httpObject.responseText;


var from = bdy_text.indexOf("<article class='noin'>");

var to = bdy_text.indexOf("</article>");






document.getElementById('outputText').innerHTML = bdy_text.substring(from, to);

}

}
[/JS]
en krijg ik netjes de lijst met artikelen!


Dus je zult eventjes moeten laten zien wat de inhoud van san2.php is, OF zelf even klooien met indexOf en substring.



:thumb:

Hallo,

Ik heb maar 1 bestand, en dat is degene die ik hier heb gepost, san2.php. Hierin zit alle ajax en php codes beschreven in de eerste post. Is het noodzakelijk om een externe php bestand te maken? Of kan je niet alles in een bestand houden?

Op deze manier lukt het wel, zoals je ook had aangegeven:

[JS]
function setOutput(){

if(httpObject.readyState == 4){

var bdy_text = httpObject.responseText;
var from = bdy_text.indexOf("<div id='baslangic'>");
var to = bdy_text.indexOf("</div>");

var ab=bdy_text.substring(from, to);

document.getElementById('outputText').innerHTML = ab;


}

}

[/JS]

Dus er is wel een verschil tussen de substr() en substring() methods. Met de substr() method lukte hetzelfde helaas niet.

Nogmaals bedankt voor de hulp.
 
Ah, op die manier :thumb:

Dus er is wel een verschil tussen de substr() en substring() methods.
Jazeker: dit zijn de proto's:
[JS]function substr(from, length); // returnt vanaf FROM, LENGTH characters
function substring(from, to); // returnt vanaf FROM tot en met TO characters[/JS]Zie ook deze site.



:thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan