Solved

New to xajax/javascript = problem

Posted on 2009-07-11
10
423 Views
Last Modified: 2013-11-11
Hello!

I'm trying to put a javascript variable into a PHP variable using xajax. But I can´t get it to work.

Error msg:

Fatal error: Class 'xajaxResponse' not found in /home/web9905/domains/domain.com/public_html/xajax/multiply.php on line 23

What am I doing wrong?
<?php

require("xajax/xajax_core/xajax.inc.php");

echo '<?xml version="1.0" encoding="UTF-8"?>'
 

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

    <head>

        <title></title>

        <script language="javascript">

            var testVar = 5;

        </script>
 
 

    </head>

    <body>
 

        <?

        MyPHPFunction(testVar);
 

        function MyPHPFunction($jsVar) {

            $variable = strtoupper($jsVar);

            $objResponse = new xajaxResponse();

            $objResponse->script("PHPvar = '$variable';");

            return $objResponse;

		}

        ?>
 

        <div id="someID"><p></p></div>

    </body>

</html>

Open in new window

0
Comment
Question by:AphX
  • 5
  • 5
10 Comments
 
LVL 39

Expert Comment

by:Roger Baklund
ID: 24832811
You need to initialize xajax. Put this after you include xajax on line 2:

$xajax = new xajax();
$xajax->registerFunction("MyPHPFunction");
$xajax->processRequest();

Within HTML HEAD you need this:

<?php $xajax->printJavascript(); ?>

This sets up the xajax javascript helper functions.
0
 
LVL 2

Author Comment

by:AphX
ID: 24832839
Hi again and thank you! :)

Now I get this pop-up error msg:

Error: the xajax Javascript component could not be included. Perhaps the URL is incorrect? URL: xajax_js/xajax_core.js

I dont know why =(

the require path at line 2 is correct... one of the xajax example's worked so there is no file missing in the framework.
<?php

require("xajax/xajax_core/xajax.inc.php");

$xajax = new xajax();

$xajax->registerFunction("MyPHPFunction");

$xajax->processRequest();

echo '<?xml version="1.0" encoding="UTF-8"?>'
 

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

    <head>

        <title></title>

        <script language="javascript">

            var testVar = 5;

        </script>

        

        <?php $xajax->printJavascript(); ?>

    </head>

    <body>

        

        <?

        MyPHPFunction(testVar);

        

        function MyPHPFunction($jsVar) {

            $variable = strtoupper($jsVar);

            $objResponse = new xajaxResponse();

            $objResponse->script("PHPvar = '$variable';");

            return $objResponse;

        }

        ?>

        

        <div id="someID"><p></p></div>

    </body>

</html>

Open in new window

0
 
LVL 2

Author Comment

by:AphX
ID: 24832841
If I remove line 17, the msg doesn't show up...
0
 
LVL 39

Expert Comment

by:Roger Baklund
ID: 24832885
Line 17 must be there.

Because xajax is not stored directly in the folder where your script is located, you need to configure the path. Try this:

$xajax = new xajax();
$xajax->configure('javascript URI','xajax/');
$xajax->registerFunction("MyPHPFunction");
$xajax->processRequest();

 
0
 
LVL 39

Expert Comment

by:Roger Baklund
ID: 24832906
Your line 22 is wrong... you are calling the PHP function from PHP.

Put this in the HTML instead:

<button onclick="xajax_MyPHPFunction('Hello world!');">Test</button>
<button onclick="alert(PHPvar);">Show result</button>

Also, line 21 should be "<?php", not just "<?". It might work on your server, but some servers does not accept the short start tag.
0
Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

 
LVL 2

Author Comment

by:AphX
ID: 24832947
Thanks a lot! All of that worked like a charm!

Last thing...

I have a lot of PHP code, how do I actually put the testVar variable to a PHP variable?

Sorry for being a noob!

Your help really means a lot to me!
<?php

require("xajax/xajax_core/xajax.inc.php");

$xajax = new xajax();

$xajax->configure('javascript URI','xajax/');

$xajax->registerFunction("MyPHPFunction");

$xajax->processRequest();

echo '<?xml version="1.0" encoding="UTF-8"?>'
 

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

    <head>

        <title></title>

        <script language="javascript">

            var testVar = 5;

        </script>

        

        <?php $xajax->printJavascript(); ?>

        

        <script language="javascript">

		var test = 5;

        </script>
 

    </head>

    <body>

        

        <?php

        

        function MyPHPFunction($jsVar) {

            $variable = strtoupper($jsVar);

            $objResponse = new xajaxResponse();

            $objResponse->script("PHPvar = '$variable';");

            return $objResponse;

        }

        ?>

        <button onclick="xajax_MyPHPFunction('testVar');">Test</button>

		<button onclick="alert(PHPvar);">Show result</button>

        <div id="someID">

        	<?php

				$varFromJs = "?";

			?>

        </div>

    </body>

</html>

Open in new window

0
 
LVL 39

Expert Comment

by:Roger Baklund
ID: 24832964
Just remove the quotes:

<button onclick="xajax_MyPHPFunction(testVar);">Test</button>

...but now the strtoupper() PHP function does not make much sense... for testing, change it like this:

$variable = $jsVar * 2;

...and remove the quotes in the PHP response, because it is now an integer, not a string:

$objResponse->script("PHPvar = $variable;");
0
 
LVL 39

Accepted Solution

by:
Roger Baklund earned 500 total points
ID: 24832968
To write to the someID div, add this to the response object:

            $objResponse->assign('someID','innerHTML',"Result: $variable");
0
 
LVL 2

Author Comment

by:AphX
ID: 24833011
I know these are strong words... But. I LOVE YOU!!! <3

You just helped me complete a 1-month project.

I really need to practice JavaScript :)

Thank you thank you thank you!

You're my god!
0
 
LVL 2

Author Closing Comment

by:AphX
ID: 31602501
!!! You're really a Genius
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Build an array called $myWeek which will hold the array elements Today, Yesterday and then builds up the rest of the week by the name of the day going back 1 week.   (CODE) (CODE) Then you just need to pass your date to the function. If i…
This article demonstrates how to create a simple responsive confirmation dialog with Ok and Cancel buttons using HTML, CSS, jQuery and Promises
Learn how to match and substitute tagged data using PHP regular expressions. Demonstrated on Windows 7, but also applies to other operating systems. Demonstrated technique applies to PHP (all versions) and Firefox, but very similar techniques will w…
The viewer will learn how to count occurrences of each item in an array.

911 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

24 Experts available now in Live!

Get 1:1 Help Now