I need to get a confirmation callback live in jQuery if and when the function I'm needing fires, that way I can display a confirmation in place. Inevitably I'm disabling the default form functionality (
see the very last example on this page), so maybe Ajax isn't important, but I still need to know what file/where to point
to, so I can get a response
from it. =/
My intentions:
My long term goal here is to attach a function to the template that will make a display a giftbox on any page at an extremely rare random. Without leaving the current page whatsoever, the user will click the giftbox, it will open reward them with currency, and tell them just how much they obtained. There will be an 'x' in the corner to dismiss the opened box, clicking anywhere else after the box has been opened will dismiss the box, and it definitely won't be there again on a reload unless they have somehow obtained a new, unopened giftbox. If the giftbox were to appear on an important page, such as one that contained a confirm or next button, the user absolutely would not want to be redirected elsewhere as that would disrupt their navigation of the website.
I absolutely do not want to create a new page anywhere in this process, except if I need to make a new one in root just to process the form data, and I need to know how and where to point to it. But the form itself created in class_template.php and is invisible, hence me asking how to create a hidden text field with the FormBuilder, since I know how to do it if I could manually write the form, and is just the 'submit' button, which is in the shape of a giftbox, and not even a button, visually, at all.
Thank you so much for always being helpful!
In classes/class_template.php I've added in this (where we doing stuff before):
PHP Code:
$giftboxform = '<form action="addcash.php" id="giftbox">
<input type="hidden" value="100" name="amount" />
<input type="submit" class="giftbox">Click!</input>
</form>';
$giftboxresult = '<div id="result"></div>';
$giftboxjquery = '<script>
// Attach a submit handler to the form
$( "#giftbox" ).submit(function( event ) {
// Stop form from submitting normally
event.preventDefault();
// Get some values from elements on the page:
var $form = $( this ),
amount = $form.find( "input[name=\'amount\']" ).val(),
url = $form.attr( "action" );
// Send the data using post
var getgift = $.post( url, { amount: amount } );
// Put the results in a div
getgift.done(function( msg ) {
$( "#gamescore" ).hide(); // hide the form
$( "#result" ).html( msg );
});
// If failure
getgift.fail(function( jqXHR, textStatus ) {
alert( "Request failed: " + textStatus );
});
});
</script>';
$this->assign("giftbox","{$giftboxform}{$giftboxresult}{$giftboxjquery}");
This successfully renders the invisible form and it's submit button (though the intention is for it to look like a giftbox, not a button, with css). It also renders a div whose contents will be filled with the result, and the jQuery necessary to process the form inline and return the result. It does successfully pass a variable to php.
However, I need to now go make "addcash.php" in the root... and add the function to it:
PHP Code:
public function gamescore() {
$mysidia = Registry::get("mysidia");
if($mysidia->input->post("amount")){
$amount = $mysidia->input->post("amount");
$this->money += $amount;
$mysidia->db->update("users", array("money" => $this->money), "username = '{$this->username}'");
return "Obtained" + $amount + ".";
}
}
That's the remaining thing I need help with, but I'm going to try and imitate what's there... so I'm off to try that.
edit: Ok no matter what I try, it's still be terribly dumb and never updating the database, even if I use an actual standard database request with normal php and not the Mysidia way. Regardless of it ever returning data for confirmation's sake, it should at LEAST do that much and it never accomplishes that.
If you can think of a better way to do all this, anyway at all, so long as there is not a page redirect or reload, give it a shot. Heck, even do one that does require a reload. I really just need a way to give users cash at the click of a button or the run of a Javascript function (giftbox, gamescore, anything).