Solved

New to xajax/javascript = problem

Posted on 2009-07-11
10
425 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
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
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
 
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

Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

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

Suggested Solutions

Title # Comments Views Activity
update query is not working , giving Mariadb server version error 1 37
Date on a table 16 33
MySQL Persistent Connections 10 30
javascript form - error when hitting enter 3 26
JavaScript can be used in a browser to change parts of a webpage dynamically. It begins with the following pattern: If condition W is true, do thing X to target Y after event Z. Below are some tips and tricks to help you get started with JavaScript …
Nothing in an HTTP request can be trusted, including HTTP headers and form data.  A form token is a tool that can be used to guard against request forgeries (CSRF).  This article shows an improved approach to form tokens, making it more difficult to…
The viewer will learn how to count occurrences of each item in an array.
The viewer will learn how to look for a specific file type in a local or remote server directory using PHP.

679 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