TulorkMedlem sedan aug. 2004952 inlägg
Hoppas att någon kan ge mig ett exempel på hur man gör för att javascript ska kontakta en PHP fil med t ex två GET variablar... sen få tillbaka information ifrån PHP filen...
Alternativt tala om för mig vad detta heter så att jag själv kan söka på det.... man brukar ofta se denna funktionen hos sidor som erbjuder tjänster till personer som ej har stöd för PHP, ASP osv...
Fredde MannenMedlem sedan nov. 20013 498 inlägg
En grej kan ju vara Ajax, en annan sak kan vara att man helt enkelt länkar till en php/asp-fil som har javascript-kod i sig. Ex
<script type="text/javascript" src="http://www.domain.se/file.php?var1=Fredrik"></script>
Sen infogar man kodsnutten någonstans på sidan.
Sedan file.php
<?php
if(isset($_GET['var1'])) {
echo "document.write('" . $_GET['var1'] . " din lilla krabat.');"
} else {
echo "document.write('En namnlös liten krabat.');"
}
?>
Men detta är den gamla tidens grejs som man använde sig för att erbjuda tjänster till folk som inte hade stöd för ASP, PHP etc.
Nu kör man mer på det som kallas för AJAX, vilket är helt klart mer användbart :)
Google has the answer..
TulorkMedlem sedan aug. 2004952 inlägg
Exakt det jag var ute efter :)
Jag hade gärna provat med Ajax.. men jag vet inte vad jag ska söka efter i detta fallet. Jag är helt och hållet insnöad i PHP och skuttar inte ofta över till Javascript och Ajax.
Fredde MannenMedlem sedan nov. 20013 498 inlägg
Okei..
Det finns ju flera sätt att använda sig av det äldre sättet också... man kan ju inte få till de där snygga, dvs ändringar utan att behöva ladda om sidan..
Mitt ovanstående exempel skulle kunna skrivas så här också, tror jag.
<?php if(isset($_GET['var1'])) {
$var = $_GET['var1'];
}
else { $var = ""; }
?>
jsVar = <?=$var?>;
Sen kan man ju sidan som länkar in file.php, använda javascript variabeln jsVar, som den vill :)
TulorkMedlem sedan aug. 2004952 inlägg
ok... tackar för att du hjälper mig :)
Har du något AJAX exempel som utför samma sak som i detta exempel.. bara det att den laddar om datan automatiskt? Eller om du kan peka mig i rätt riktning.
Fredde MannenMedlem sedan nov. 20013 498 inlägg
Du kan ju kolla in följande: http://www.degraeve.com/reference/simple-ajax-example.php
Dock har de använt CGI istället för ex. PHP eller ASP..
du förstår nog principen i alla fall :)
TulorkMedlem sedan aug. 2004952 inlägg
jupp.. ska kolla. Dock så får jag inget av dina exempel att fungera :(
Edit: Mitt fel... ditt första exempel fungerar bra.
TulorkMedlem sedan aug. 2004952 inlägg
Eller nä... jag får det inte att fungera.
TulorkMedlem sedan aug. 2004952 inlägg
Detta fungerar bra
<html>
<head>
<title>Simple Ajax Example</title>
<script language="Javascript">
function xmlhttpPost(strURL) {
var xmlHttpReq = false;
var self = this;
// Mozilla/Safari
if (window.XMLHttpRequest) {
self.xmlHttpReq = new XMLHttpRequest();
}
// IE
else if (window.ActiveXObject) {
self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
}
self.xmlHttpReq.open('POST', strURL, true);
self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
self.xmlHttpReq.onreadystatechange = function() {
if (self.xmlHttpReq.readyState == 4) {
updatepage(self.xmlHttpReq.responseText);
}
}
self.xmlHttpReq.send(getquerystring());
}
function getquerystring() {
var form = document.forms['f1'];
var word = form.word.value;
qstr = 'w=' + escape(word); // NOTE: no '?' before querystring
return qstr;
}
function updatepage(str){
document.getElementById("result").innerHTML = str;
}
</script>
</head>
<body>
<form name="f1" method="POST">
<p>word: <input name="word" type="text">
<input value="Go" type="button" onclick='JavaScript:xmlhttpPost("source.php")'></p>
<div id="result"></div>
</form>
</body>
</html>
Men jag behöver ändra den lite... får inte det att fungera dock. Jag vill skippa <form> biten och istället anropa source.php?w=hej
Allt som sker på PHP sidan har jag koll på.
För att vara ännu tydligare... jag vill att en användare ska kunna använda <script>anropa source.php?id=555&sec=333</script> på sin sida och få tillbaka det som jag skriver ut i PHP filen....
I PHP tar jag emot GET variablerna...hämtar data ur databasen och skriver ut det som ska skrivas ut.
Det borde gå att bygga om koden ovan.. men jag har ingen aning hur man gör :birp
Det får ju helst bara vara ett par rader långt också.
Exempel på det jag är ute efter.... Google adsense, fast en mycket simpel variant
effataMedlem sedan apr. 2008141 inlägg
Rekommenderar varmt att du använder något av de stora javascriptlibbarna för "ajax" grejer, så får du funktionalitet som är väldokumenterad och vältestad.
T.ex. Mootools Request
Så här skulle koden kunna se ut:
var url = "http://server.com/script.php";
var argument = "parameter1="+value1+"¶meter2=" + value2
var ajax = new Request({url: url,
method: 'get',
onComplete: function (reponseText) {
// kod när requestet är klart
}).send(argument);
TulorkMedlem sedan aug. 2004952 inlägg
Jag har en lösning nu..typ. Problemet är att den bara fungerar i FF... har felsökt koden i ett bra tag nu och kan inte komma fram till varför den inte vill fungera i IE och safari
fetch.js
function xmlhttpPost(strURL) {
var xmlHttpReq = null;
try
{
xmlHttpReq=new XMLHttpRequest();
}
catch (e)
{
try
{
xmlHttpReq=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
xmlHttpReq=new ActiveXObject("Microsoft.XMLHTTP");
}
}
xmlHttpReq.open('POST', strURL, true);
xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xmlHttpReq.onreadystatechange = function() {
if (xmlHttpReq.readyState == 1) {
updatepage('<br /><br /><img src="loader.gif" border="0" alt="" style="margin-left:15px;" />');
}
if (xmlHttpReq.readyState == 4) {
updatepage(xmlHttpReq.responseText);
}
}
xmlHttpReq.send(getquerystring());
}
function getquerystring() {
var form = document.forms['feeds'];
var word = form.feed.value;
qstr = 'feed=' + escape(word);
return qstr;
}
function updatepage(str){
document.getElementById("result").innerHTML = str;
}
index.html
<!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=iso-8859-1" />
<title>Untitled Document</title>
<script type="text/javascript" src="js/fetch.js"></script>
</head>
<body>
<form name="feeds" action="index.html" method="POST">
<select name="feed">
<option value="">Välj</option>
<option value="http://www.geiser.se/feed" onClick='xmlhttpPost("show_feed.php")'>Geiser.se</option>
<option value="http://feeds.feedburner.com/tkjblogg?format=xml" onClick='xmlhttpPost("show_feed.php")'>TkJ</option>
<option value="http://www.dan.se/feed" onClick='xmlhttpPost("show_feed.php")'>Dan.se</option>
</select><br />
</form>
<div id="result"></div>
</body>
</html>
show_feed.php
<?php
$url = $_POST['feed'];
if(isset($_POST['feed']))
{
if(preg_match("/http:/", $url))
{
require_once("class_rss.php"); //Hämtar klassen
$rss = new rssHandler(); //Skapar instans till klassen
//Här anger du RSS-feedens url
$antal = 20; //Här anger du hur många inlägg du vill skriva ut
//Här skickar du in datan som klassen behöver och skriver ut den
echo $rss->show_feed($url, $antal);
}
}
?>