Reputation: 18639
I am wondering whether this is possible:
I have a page. The user clicks a link and that calls a PHP script. The PHP script returns true or false.
Depending on the true or false, I was hoping to be able to toggle a div.
I am wondering whether I need to do it the AJAX way? How do people usually accomplish this? Seems pretty common.
I am using this YUI library already:
<link rel="stylesheet" type="text/css" href="http://yui.yahooapis.com/combo?2.8.2r1/build/reset-fonts-grids/reset-fonts-grids.css&2.8.2r1/build/base/base-min.css">
Upvotes: 0
Views: 543
Reputation: 57217
Yes, very easy, no need for Ajax. Here's two ways:
Using straight PHP:
<?php
if($test) {
echo "<div>Content...</div>";
}
?>
Or, using inline Javascript (in the PHP script), assuming you have a <div id='targetDiv'>
in your HTML, and a $testVar
in your PHP:
<script type='text/javascript'>
function toggle(testVar) {
if(testVar) { document.getElementById('targetDiv').style.display = ""; }
else { document.getElementById('targetDiv').style.display = "none"; }
}
window.onload = function() { toggle(<?php echo $testVar; ?>); }
</script>
The second method can be easily altered to degrade gracefully.
Upvotes: 0
Reputation: 1625
Set the php script to add a hidden field ... such as...
<input type="hidden" id="passed-value" value="passed-val-is-true" />
Then in your Javascript when you fire the toggle event .. check that element ...
In jQuery would be something like this ...
$foo.click(( if (passed-value.value === "passed-val-is-true") { foo.toggle(); }
Sorry for syntax .. but you should get the general idea.
Also, if you need it to do without page reload, i would def recommend Ajax (pref via jQuery)
Upvotes: 2
Reputation: 5115
Yes, you should use AJAX to create a good flow in your site. Instead of implementing your own AJAX handling functions, you could use one of the big JavaScript frameworks, I recommend http://jquery.com/. There, you can read about (and see examples of) jQuery.ajax
- http://api.jquery.com/category/ajax/.
This should get you started, but the main idea is to bind that link to an AJAX function, that will call your PHP script, and based on the contents of the returned data, toggle your DIVs on/off.
Good luck!
Upvotes: 2
Reputation: 46050
jQuery:
$.post('/path/to/url', {data: 'some data'}, function(data) {
if (data) $('#some-div').show();
else $('#some-div').hide();
}, 'json');
PHP:
echo json_encode(true);
For more information see:
Upvotes: 2