Father Chrysostomos > WWW-Mechanize-Plugin-Ajax > WWW::Mechanize::Plugin::Ajax

Download:
WWW-Mechanize-Plugin-Ajax-0.05.tar.gz

Dependencies

Annotate this POD

View/Report Bugs
Module Version: 0.05   Source  

NAME ^

WWW::Mechanize::Plugin::Ajax - WWW::Mechanize plugin that provides the XMLHttpRequest object

VERSION ^

Version 0.05 (alpha)

SYNOPSIS ^

  use WWW::Mechanize;
  $m = new WWW::Mechanize;
  
  $m->use_plugin('Ajax');
  $m->get('http://some.site.com/that/relies/on/ajax');

DESCRIPTION ^

This module is a plugin for WWW::Mechanize that loads the JavaScript plugin (WWW::Mechanize::Plugin::JavaScript) and provides it with the XMLHttpRequest object.

To load the plugin, use WWW::Mechanize's use_plugin method, as shown in the Synopsis. (The current stable release of W:M doesn't support it; see "PREREQUISITES", below.) Any extra arguments to use_plugin will be passed on to the JavaScript plugin (at least for now).

ASYNCHRONY ^

The XMLHttpRequest object currently does not support asynchronous connections. Later this will probably become an option, at least for threaded perls.

NON-HTTP ADDRESSES ^

Since it uses LWP, URI schemes other than http (e.g., file, ftp) are supported.

INTERFACE ^

The XMLHttpRequest interface members supported so far are:

  Methods:
  open
  send
  abort
  getAllResponseHeaders
  getResponseHeader
  setRequestHeader
  
  Attributes:
  onreadystatechange
  readyState
  responseText
  responseXML
  status
  statusText
  
  Event-Related Methods:
  addEventListener
  removeEventListener
  dispatchEvent

  Constants (static properties):
  UNSENT
  OPENED
  HEADERS_RECEIVED
  LOADING
  DONE

responseBody, overrideMimeType, getRequestHeader, removeRequestHeader and more event attributes are likely to be added in future versions.

PREREQUISITES ^

This plugin requires perl 5.8.3 or higher, and the following modules:

And you'll also need the experimental version of WWW::Mechanize available at http://www-mechanize.googlecode.com/svn/wm/branches/plugins/

BUGS ^

If you find any bugs, please report them to the author by e-mail (preferably with a patch :-).

XML::DOM::Lite is quite lenient toward badly-formed XML, so the responseXML property returns something useful even in cases when it should be null.

The send method does not yet accept a Document object as its argument. (Well, it does, but it stringifies it to '[object Document]' instead of serialising it as XML.)

The SECURITY_ERR, NETWORK_ERR and ABORT_ERR constants are not available yet, as I don't know where to put them.

In various other ways, it does not fully conform to the spec (which I only found out about recently). It would be quicker to fix them than to list them here. (And none of the Level 2 additions are implemented.)

Furthermore, this module follows the badly-designed API that is unfortunately the standard so I can't do anything about it.

AUTHOR & COPYRIGHT ^

Copyright (C) 2008 Father Chrysostomos <['sprout', ['org', 'cpan'].reverse().join('.')].join('@')>

This program is free software; you may redistribute it and/or modify it under the same terms as perl.

SEE ALSO ^

WWW::Mechanize

WWW::Mechanize::Plugin::JavaScript

WWW::Mechanize::Plugin::DOM

XML::DOM::Lite

The XMLHttpRequest specification (draft as of August 2008): http://www.w3.org/TR/XMLHttpRequest/

XMLHttpRequest Level 2: http://www.w3.org/TR/XMLHttpRequest2/

syntax highlighting: