Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5119576
  • 博文数量: 921
  • 博客积分: 16037
  • 博客等级: 上将
  • 技术积分: 8469
  • 用 户 组: 普通用户
  • 注册时间: 2006-04-05 02:08
文章分类

全部博文(921)

文章存档

2020年(1)

2019年(3)

2018年(3)

2017年(6)

2016年(47)

2015年(72)

2014年(25)

2013年(72)

2012年(125)

2011年(182)

2010年(42)

2009年(14)

2008年(85)

2007年(89)

2006年(155)

分类:

2008-11-23 03:02:31

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"></script>
  <script type="text/javascript" src="/js/xajax.js"></script>
  <script type="text/javascript"></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 filesimagemagick-6.3.0-q16;C:WINDOWSsystem32;C:WINDOWS;C:WINDOWSSystem32Wbem;C:Program FilesATI TechnologiesATI Control Panel;C:Program FilesQuickTimeQTSystem
    [SystemRoot] => C:WINDOWS
    [COMSPEC] => C:WINDOWSsystem32cmd.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

 

阅读(2022) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~