source:
http://community.xajaxproject.org/viewtopic.php?id=3051
H.E. Pennypacker
Newbie
Registered: 2006-11-13
Posts: 6
I am using
Zend Framework 0.20 and Xajax 0.5. I am having issues with a simple hello world example. I just get
the generic "The
XML response from the server was invalid.." message so it's not helping at all. I have a very simple hello world.
Here is my controller code:
Code:
PHP
<?php
class HelloWorldController extends Zend_Controller_Action {
function indexAction()
{
$xajax = new xajax();
$xajax->registerFunction(array("doAlert", $this, "doAlert"));
$xajax->processRequest();
$view = Zend::registry("view");
$view->title = "Hello World";
$view->xajaxJs = $xajax->getJavascript("/js/", "xajax.js");
echo $view->render("HelloWorld.php");
}
function noRouteAction()
{
echo "No Route!";
}
function doAlert()
{
$objResponse = new xajaxResponse();
$objResponse->alert("Whaaaaaaaa");
return $objResponse;
}
}
?>
Here is the
HTML file (HelloWorld.php):
Code: PHP
<html>
<head>
<?= $this->xajaxJs; ?>
<title><?= $this->escape($this->title); ?></title>
<link rel="stylesheet" type="text/css" href="/css/jog.css" />
</head>
<body>
<div id="content">
<h1><?= $this->escape($this->title); ?></h1>
<input type="button" value="Execute Xajax Alert" onClick="xajax_doAlert();" />
</div>
</body>
</html>
And here is a view source of the rendered html file, all looks good:
Code: PHP
<html>
<head>
<script type="text/javascript"><!--
var xajaxConfig = {
requestURI: "http://127.0.0.1/HelloWorld",
debug: false,
statusMessages: false,
waitCursor: true,
version: "xajax 0.5 Beta 1",
legacy: false
};
var xajaxLoaded=false;
function xajax_doAlert(){return xajax.call("doAlert", {parameters: arguments});}
function xajax_doUpdateDiv(){return xajax.call("doUpdateDiv", {parameters: arguments});}
--></script>
<script type="text/javascript" src="/js/xajax.js"></script>
<script type="text/javascript"><!--
window.setTimeout(function () { if (!xajaxLoaded) { alert('Error: the xajax
Javascript file could not be included. Perhaps the URL is incorrect?\nURL: /js/xajax.js'); } }, 6000);
--></script>
<title>Hello World</title>
<link rel="stylesheet" type="text/css" href="/css/jog.css" />
</head>
<body>
<div id="content">
<h1>Hello World</h1>
<input type="button" value="Execute Xajax Alert" onClick="xajax_doAlert();" />
</div>
</body>
</html>
Finally, a print_r of $_SERVER just in case there is some issue with mod_rewrite and the request URI:
Code: PHP
[REDIRECT_STATUS] => 200
[HTTP_HOST] => 127.0.0.1
[HTTP_USER_AGENT] => Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1) Gecko/20061010 Firefox/2.0
[HTTP_ACCEPT] => application/x-shockwave-flash,text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
[HTTP_ACCEPT_LANGUAGE] => en-us,en;q=0.7,es-pe;q=0.3
[HTTP_ACCEPT_ENCODING] => gzip,deflate
[HTTP_ACCEPT_CHARSET] => ISO-8859-1,utf-8;q=0.7,*;q=0.7
[HTTP_KEEP_ALIVE] => 300
[HTTP_CONNECTION] => keep-alive
[HTTP_CACHE_CONTROL] => max-age=0
[PATH] => c:\program files\imagemagick-6.3.0-q16;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\ATI Technologies\ATI Control Panel;C:\Program Files\QuickTime\QTSystem\
[SystemRoot] => C:\WINDOWS
[COMSPEC] => C:\WINDOWS\system32\cmd.exe
[PATHEXT] => .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
[WINDIR] => C:\WINDOWS
[SERVER_SIGNATURE] => <address>Apache/2.0.59 (Win32) PHP/5.1.6 Server at 127.0.0.1 Port 80</address>
[SERVER_SOFTWARE] => Apache/2.0.59 (Win32) PHP/5.1.6
[SERVER_NAME] => 127.0.0.1
[SERVER_ADDR] => 127.0.0.1
[SERVER_PORT] => 80
[REMOTE_ADDR] => 127.0.0.1
[DOCUMENT_ROOT] => C:/wamp/www
[SERVER_ADMIN] => webmaster@localhost
[SCRIPT_FILENAME] => C:/wamp/www/index.php
[REMOTE_PORT] => 4930
[REDIRECT_URL] => /HelloWorld
[GATEWAY_INTERFACE] => CGI/1.1
[SERVER_PROTOCOL] => HTTP/1.1
[REQUEST_METHOD] => GET
[QUERY_STRING] =>
[REQUEST_URI] => /HelloWorld
[SCRIPT_NAME] => /index.php
[PHP_SELF] => /index.php
[REQUEST_TIME] => 1164746605
[argv] => Array
(
)
[argc] => 0
I'm just running this off a standard php 5.1.6 wamp installation. I've tried changing the URI on the xajax instantiation but nothing seems to get this working. Please, someone help!
CrazyLegz
Newbie
Registered: 2007-02-28
Posts: 3
Hi, I had the same problem and found a solution.
嘿,我和你有遇到同样的问题并且照的了解决方法。
I'm using Zend Framework 0.8.0 and xajax 0.2.4
我使用的是Zend Framework 0.8.0 和 xajax 0.2.4
After examening processRequests() method in the xajax class I found out that processRequests is calling the getRequestMode method. This method returned -1 wich means $_POST["xajax"] and $_GET["xajax"] are empty.
If getRequestMode returns -1 it exits before is has done something at all. So this means your
Ajax call isn't processed.
In my case this was very logical. In my index.php bootstrap file I had the following two lines.
Zend::register("post", new Zend_Filter_Input($_POST));
Zend::register("get", new Zend_Filter_Input($_GET));
The $_POST and $_GET arrays are set to NULL by Zend_Filter_Input.
So $_POST["xajax"] will never get to processRequests of the xajax class.
You can resolve this by changing the two lines to the following two lines:
Zend::register("post", new Zend_Filter_Input($_POST, false));
Zend::register("get", new Zend_Filter_Input($_GET, false));
In this way the $_POST and $_GET arrays are left intact.
CtC
Administrator
From: Ohio, USA
Registered: 2006-07-14
Posts: 1331
Website
Thanks
for the post! I've added this to the tips and tricks section of the wiki.
// Joe
--------------------------------------------------------------------------------
xajax Developer
Connect to me on LinkedIn:
http://www.linkedin.com/in/calledtoconstruct