Invision Community 4: SEO, prepare for v5 and dormant account notifications By Matt Monday at 02:04 PM
Mick23 Posted June 21, 2022 Posted June 21, 2022 Thanks everyone who has helped me so far, I've been making good progress on my project. Some context: A phrase is extracted from the database and used in the javascript code - the phraseId is also sent via template parameters. When the player wins or loses, I want to then call a controller method to set the results of the game they have just played, those parameters are likely to be something like: { phrase_id: 1234, result: 1 // 0 = lose, 1= win } What is the best way to approach this? Initially I thought I could use ajax to call the function like so (passing in phraseId and result): this._ajaxObj = ips.getAjax()( 'index.php?app=game&module=gameplayh&controller=gameplayh&do=endGame ', { data: { phraseID: 1234, result: 1 } }) .done( function (response) { }); But I am not sure how to return a simple "ok/true/false/whatever" from my php function? I have this code but I am doubtful about it: public function endGame () { if (isset(\IPS\Request::i()->phraseId) && isset(\IPS\Request::i()->result)) { # do something with phraseId and result here, write to database etc. } } I do not have to return a redirect as the user will trigger a new game using a button click (so they can view their results in the meantime). Thanks for any advice 🙂
Solution Daniel F Posted June 21, 2022 Solution Posted June 21, 2022 Your approach seems to be fine. if request::I()->foo ... do something... You can also just return a simple "OK" by using if( \IPS\Request::i()->isAjax() ) { \IPS\Output::i()->json( 'OK' ); } If you want to see the full working code, take a look at e.g. applications/core/modules/front/contact/contact.php Mick23 and SeNioR- 2
Recommended Posts