Page 1 of 1
Re: Loading div content within the div
Posted: Thu Jan 05, 2012 2:27 pm
by Torniquet
I dont know how to do it in plain JS.
But the jQuery equiv (look up jquery and download the library... makes ajax/javascript functionality MUCH easier)
Code: Select all
<a href="somepage.php" onclick="$('#idOfDivToLoadInto').load($(this).attr("href")); return false;">page</a>
<div id="idOfDivtoLoadInto">
<!-- Empty div ready to be populated -->
</div>
Shouldn't be to hard to work out

Re: Loading div content within the div
Posted: Thu Jan 05, 2012 3:22 pm
by Chris
Torn's method is a quite an easy way of doing it, but it uses DHTML, while this works, I tend to avoid it as editing the HTML each time tends to be a pain in the neck. I prefer making JavaScript events using JavaScript itself:
Raw JavaScript (important to know the workings):
http://www.w3schools.com/dom/dom_http.asp
Code: Select all
<!DOCTYPE html>
<html>
<head>
<title>Hello!</title>
</head>
<body>
<a href="#">Click here and watch the magic happen</a>
<div id="myDiv" style="border: #000 1px solid;">this div will contain the response :D</div>
<script type="text/javascript">
document.getElementsByTagName('a')[0].onmousedown = function() // the first link on the page has been clicked
{
var ajax = new XMLHttpRequest(); // create a new XMLHttpRequest object
ajax.open('GET', 'myFile.html');
ajax.send(0); // to this day I still don't know why you need to pass a parameter
ajax.onreadystatechange = function() // goes through 5 changes, 0,1,2,3,4
{
if( ajax.readyState != 4 ) // waiting
{
document.getElementById('myDiv').innerHTML = 'Loading...'; // fill in our div with 'Loading...'
}
if( ajax.readyState == 4 ) // good to go, request is complete, we should have our content
{
document.getElementById('myDiv').innerHTML = ajax.responseText; // fill our div with the response
}
}
}
</script>
</body>
</html>
using jQuery (download from
http://jquery.com/):
http://api.jquery.com/jQuery.get/
Code: Select all
<!DOCTYPE html>
<html>
<head>
<title>Hello!</title>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.1.min.js"> // inculde jquery </script>
<script type="text/javascript">
$(document).ready( function()
{
// add a click event to our link
$('a[href="#"]').click( function()
{
$.get('myFile.html', function(data)
{
$('#myDiv').html(data); // fill our div with the data
});
})
});
</script>
</head>
<body>
<a href="#">Click here and watch the magic happen</a>
<div id="myDiv" style="border: #000 1px solid;">this div will contain the response :D</div>
</body>
</html>
Re: Loading div content within the div
Posted: Fri Jan 06, 2012 1:03 pm
by Torniquet
Im not sure what your problem is.
It seems to be working fine for me.
Re: Loading div content within the div
Posted: Fri Jan 06, 2012 3:10 pm
by Chris
Still can't follow this completely. When you say "it won't," What is is doing?
Re: Loading div content within the div
Posted: Fri Jan 06, 2012 4:13 pm
by Chris
Code: Select all
<!DOCTYPE html>
<html>
<head>
<title>Like this?</title>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
<script type="text/javascript">
$(document).ready( function()
{
// needs to be regenerated every time the page changes
function generate()
{
$('a').click( function(e)
{
e.preventDefault();
$.get( $(this).attr('href'), function(data)
{
fillFrame(data)
})
});
$('form').submit( function(e)
{
e.preventDefault();
var method = $(this).attr('method'),
action = $(this).attr('action'),
values = {};
$.each($(this).serializeArray(), function(i, field)
{
values[field.name] = field.value;
});
$.ajax({
type : method,
url : action,
data : values,
success : function(data)
{
fillFrame(data)
}
})
})
}
// saves time like this :D
generate();
// function that fills the frame and updates again
function fillFrame(data)
{
$('#frame').html(data)
generate(); // <- regenerate
}
});
</script>
</head>
<body>
<a href="lol.html">lol?</a>
<a href="haha.html">oh.. haha</a>
<div id="frame">
</div>
</body>
</html>
lol.html
haha.html
Code: Select all
<form method="post" action="test.php">
<input type="text" value="input1" name="name" /><br />
<input type="text" value="test@lol.lol" name="email" /><br />
<input type="text" value="hah" name="whatever" />
<input type="submit" value="GO »" />
</form>
test.php
Code: Select all
<?php
if( $_SERVER['REQUEST_METHOD'] == 'POST' )
{
foreach( $_POST as $index => $value )
{
echo $index . ' = ' . $value . '<br />' . "\n";
}
}
else
{
foreach( $_GET as $index => $value )
{
echo $index . ' = ' . $value . '<br />' . "\n";
}
}
?>
<a href="haha.html">haha</a>
Re: Loading div content within the div
Posted: Sat Jan 07, 2012 3:44 pm
by MikeD
Chris wrote:
using jQuery (download from
http://jquery.com/):
http://api.jquery.com/jQuery.get/
Code: Select all
<!DOCTYPE html>
<html>
<head>
<title>Hello!</title>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.1.min.js"> // inculde jquery </script>
<script type="text/javascript">
$(document).ready( function()
{
// add a click event to our link
$('a[href="#"]').click( function()
{
$.get('myFile.html', function(data)
{
$('#myDiv').html(data); // fill our div with the data
});
})
});
</script>
</head>
<body>
<a href="#">Click here and watch the magic happen</a>
<div id="myDiv" style="border: #000 1px solid;">this div will contain the response :D</div>
</body>
</html>
Is the only way to do this by using the '#' symbol? I can't get it to work with anything else other than that, even when I do change the $('a[href="#"]').click( function() to whatever symbol.
Re: Loading div content within the div
Posted: Sat Jan 07, 2012 4:21 pm
by Chris
MikeD wrote:Chris wrote:
using jQuery (download from
http://jquery.com/):
http://api.jquery.com/jQuery.get/
Code: Select all
<!DOCTYPE html>
<html>
<head>
<title>Hello!</title>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.1.min.js"> // inculde jquery </script>
<script type="text/javascript">
$(document).ready( function()
{
// add a click event to our link
$('a[href="#"]').click( function()
{
$.get('myFile.html', function(data)
{
$('#myDiv').html(data); // fill our div with the data
});
})
});
</script>
</head>
<body>
<a href="#">Click here and watch the magic happen</a>
<div id="myDiv" style="border: #000 1px solid;">this div will contain the response :D</div>
</body>
</html>
Is the only way to do this by using the '#' symbol? I can't get it to work with anything else other than that, even when I do change the $('a[href="#"]').click( function() to whatever symbol.
No, that was more for the example, I like to add these things so people ask questions. So well done to you.
Basically jQuery makes use of CSS like selectors.
http://www.w3.org/TR/selectors/#selectors
You might notice in the HTML I have an anchor with the href attribute set to #.
Code: Select all
<a href="#">Click here and watch the magic happen</a>
Basically $('a[href="#"]') will search for all a tags with the attribute href set to #, I could search for anything I want though.
Code: Select all
$('a[href="lol.php"]').click( function() { alert('haha') } );
Code: Select all
$('a[id="myLink"]').click( function() { alert('haha') } );
Code: Select all
<a href="lol.php" id="myLink">lol</a>
or simply:
Code: Select all
$('#myLink').click( function() { alert('haha') } );
You can also just simply search all anchor elements:
Code: Select all
$('a').click( function(){ alert($(this).attr('href')) });
Code: Select all
<a href="haha">lol</a><br />
<a href="pff">:D</a>
This can of course also be used for different types of elements:
Code: Select all
$('input').click( function() { alert('you clicked the button') } );
Code: Select all
<input type="button" value="click me" />
Re: Loading div content within the div
Posted: Sat Jan 07, 2012 5:36 pm
by MikeD
Sadly my knowledge of Ajax/JQ/JS is minimal at best, and I was unable to get any of that to work.
However, I did finally get your script to work the way I wanted it to.
The Market in my game has 4 different sections to it. One for weapons, armor etc. So, when a certain link was clicked (To whatever part of the market) I needed it to load that part of the market. I couldn't get it to work with anything other than the #
So, here's what I did, it may look like ugly coding, but it does get the job done, unless there's a more efficient way to do it.
Code: Select all
<!DOCTYPE html>
<html>
<head>
<title>Hello!</title>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.1.min.js"> // inculde jquery </script>
<script type="text/javascript">
$(document).ready( function()
{
// add a click event to our link
$('a[href="#1"]').click( function()
{
$.get('myFile.html', function(data)
{
$('#myDiv').html(data); // fill our div with the data
});
})
});
</script>
<script type="text/javascript">
$(document).ready( function()
{
// add a click event to our link
$('a[href="#2"]').click( function()
{
$.get('myFile2.html', function(data)
{
$('#myDiv').html(data); // fill our div with the data
});
})
});
</script>
</head>
<body>
<a href="#1">Click here and watch the magic happen</a>
<a href="#2">Click here and watch the magic happen</a>
<div id="myDiv" style="border: #000 1px solid;">this div will contain the response :D</div>
</body>
</html>
Re: Loading div content within the div
Posted: Sat Jan 07, 2012 5:39 pm
by Chris
This is a more efficient way:
Code: Select all
<!DOCTYPE html>
<html>
<head>
<title>Hello!</title>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.1.min.js"> // inculde jquery </script>
<script type="text/javascript">
$(document).ready( function()
{
// add a click event to our link
$('a').click( function(e)
{
e.preventDefault();
var href = $(this).attr('href')
$.get(href, function(data)
{
$('#myDiv').html(data); // fill our div with the data
});
})
});
</script>
</head>
<body>
<a href="myFile.html">Click here and watch the magic happen</a>
<a href="myFiel2.html">Click here and watch the magic happen</a>
<div id="myDiv" style="border: #000 1px solid;">this div will contain the response :D</div>
</body>
</html>
Re: Loading div content within the div
Posted: Sat Jan 07, 2012 5:46 pm
by MikeD
Chris wrote:This is a more efficient way:
Code: Select all
<!DOCTYPE html>
<html>
<head>
<title>Hello!</title>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.1.min.js"> // inculde jquery </script>
<script type="text/javascript">
$(document).ready( function()
{
// add a click event to our link
$('a').click( function(e)
{
e.preventDefault();
var href = $(this).attr('href')
$.get(href, function(data)
{
$('#myDiv').html(data); // fill our div with the data
});
})
});
</script>
</head>
<body>
<a href="myFile.html">Click here and watch the magic happen</a>
<a href="myFiel2.html">Click here and watch the magic happen</a>
<div id="myDiv" style="border: #000 1px solid;">this div will contain the response :D</div>
</body>
</html>
PERFECT! Thank you!
I really need to find the time to learn JS. I've seen alot of cool things done with it.