GM.xmlHttpRequest: Difference between revisions
→Returns: as of 0.9.9 |
→Arguments: alphabetize |
||
Line 17: | Line 17: | ||
See [[#Examples]] for more detail on how to use each. | See [[#Examples]] for more detail on how to use each. | ||
; <code>binary</code> | |||
: <code>Boolean</code> (Compatibility: [[Version_history#0.8.3|0.8.3+]]) Optional, default false. When true, use the underlying <code>.sendAsBinary()</code> method. | |||
; <code>data</code> | |||
: <code>String</code> Optional. Data to send in the request body. Usually for <code>POST</code> method requests. <sup>[[#Notes|[1]]]</sup> | |||
; <code>headers</code> | |||
: <code>Object</code> Optional. A set of headers to include in the request. <sup>[[#Notes|[2]]]</sup> | |||
; <code>method</code> | ; <code>method</code> | ||
: <code>String</code> Type of HTTP request to make (E.G. <code>"GET"</code>, <code>"POST"</code>) | : <code>String</code> Type of HTTP request to make (E.G. <code>"GET"</code>, <code>"POST"</code>) | ||
; <code>onerror</code> | ; <code>onerror</code> | ||
: <code>Function</code> Optional. Will be called if an error occurs while processing the request. Passed one argument, the [[#Response Object]]. | : <code>Function</code> Optional. Will be called if an error occurs while processing the request. Passed one argument, the [[#Response Object]]. | ||
Line 39: | Line 31: | ||
; <code>onreadystatechange</code> | ; <code>onreadystatechange</code> | ||
: <code>Function</code> Optional. Will be called repeatedly while the request is in progress. Passed one argument, the [[#Response Object]]. | : <code>Function</code> Optional. Will be called repeatedly while the request is in progress. Passed one argument, the [[#Response Object]]. | ||
; <code>overrideMimeType</code> | |||
: <code>String</code> (Compatibility: [[Version_history#0.6.8|0.6.8+]]) Optional. A MIME type to specify with the request (E.G. <code>"text/html; charset=ISO-8859-1"</code>). | |||
; <code>password</code> | |||
: <code>String</code> (Compatibility: [[Version_history#0.9.0|0.9.0+]]) Optional. Password to use for authentication purposes. | |||
; <code>url</code> | |||
: <code>String</code> The URL to make the request to. Must be an absolute URL, beginning with the scheme. As of [[Version history#0.8.20100408.6|version 0.8.6]], the URL may be relative to the current page. | |||
; <code>user</code> | |||
: <code>String</code> (Compatibility: [[Version_history#0.9.0|0.9.0+]]) Optional. User name to use for authentication purposes. | |||
==== Response Object ==== | ==== Response Object ==== | ||
Line 44: | Line 44: | ||
All three of the callback functions defined in the <code>details</code> object, if called, will receive this type of object as their first (and only) argument. | All three of the callback functions defined in the <code>details</code> object, if called, will receive this type of object as their first (and only) argument. | ||
; <code>finalUrl</code> | |||
: <code>String</code> (Compatibility: [[Version_history#0.8.20080609.0|0.8.0+]]) The final URL requested, if <code>Location</code> redirects were followed. | |||
; <code>readyState</code> | |||
: <code>Number</code> The <code>readyState</code> as defined in [https://developer.mozilla.org/en/XMLHttpRequest XMLHttpRequest]. | |||
; <code>responseHeaders</code> | |||
: <code>String</code> The response headers as defined in [https://developer.mozilla.org/en/XMLHttpRequest#getAllResponseHeaders() XMLHttpRequest]. | |||
; <code>responseText</code> | |||
: <code>String</code> The <code>responseText</code> as defined in [https://developer.mozilla.org/en/XMLHttpRequest XMLHttpRequest]. | |||
; <code>status</code> | ; <code>status</code> | ||
: <code>Integer</code> The HTTP response status (E.G. 200 or 404) upon success, or <code>null</code> upon failure. | : <code>Integer</code> The HTTP response status (E.G. 200 or 404) upon success, or <code>null</code> upon failure. | ||
; <code>statusText</code> | ; <code>statusText</code> | ||
: <code>String</code> The HTTP response status line (E.G. <code>"OK"</code>, <code>"Not Found"</code>) upon success, or <code>null</code> upon failure. | : <code>String</code> The HTTP response status line (E.G. <code>"OK"</code>, <code>"Not Found"</code>) upon success, or <code>null</code> upon failure. | ||
== Returns == | == Returns == |
Revision as of 14:50, 12 August 2011
Description
This method performs a similar function to the standard XMLHttpRequest object, but allows these requests to cross the same origin policy boundaries.
Compatibility: Greasemonkey 0.2.5+
Syntax
function GM_xmlhttpRequest( details )
Arguments
This method only takes one argument, the details
object.
Described below are the properties that may be defined on that object.
See #Examples for more detail on how to use each.
binary
Boolean
(Compatibility: 0.8.3+) Optional, default false. When true, use the underlying.sendAsBinary()
method.data
String
Optional. Data to send in the request body. Usually forPOST
method requests. [1]headers
Object
Optional. A set of headers to include in the request. [2]method
String
Type of HTTP request to make (E.G."GET"
,"POST"
)onerror
Function
Optional. Will be called if an error occurs while processing the request. Passed one argument, the #Response Object.onload
Function
Optional. Will be called when the request has completed successfully. Passed one argument, the #Response Object.onreadystatechange
Function
Optional. Will be called repeatedly while the request is in progress. Passed one argument, the #Response Object.overrideMimeType
String
(Compatibility: 0.6.8+) Optional. A MIME type to specify with the request (E.G."text/html; charset=ISO-8859-1"
).password
String
(Compatibility: 0.9.0+) Optional. Password to use for authentication purposes.url
String
The URL to make the request to. Must be an absolute URL, beginning with the scheme. As of version 0.8.6, the URL may be relative to the current page.user
String
(Compatibility: 0.9.0+) Optional. User name to use for authentication purposes.
Response Object
All three of the callback functions defined in the details
object, if called, will receive this type of object as their first (and only) argument.
finalUrl
String
(Compatibility: 0.8.0+) The final URL requested, ifLocation
redirects were followed.readyState
Number
ThereadyState
as defined in XMLHttpRequest.responseHeaders
String
The response headers as defined in XMLHttpRequest.responseText
String
TheresponseText
as defined in XMLHttpRequest.status
Integer
The HTTP response status (E.G. 200 or 404) upon success, ornull
upon failure.statusText
String
The HTTP response status line (E.G."OK"
,"Not Found"
) upon success, ornull
upon failure.
Returns
(Compatibility: version 0.8.5+)
In the normal (asynchronous) case, an object with one method: abort()
.
(Compatibility: version 0.9.9+)
In the synchronous case, an object with the abort()
method, and properties describing the response:
finalUrl
readyState
responseHeaders
responseText
status
statusText
These values are the same as those for a standard XMLHttpRequest
object, see the MDN Docs.
(Note: responseHeaders
is the result of the getAllResponseHeaders()
method.)
Examples
Bare Minimum
GM_xmlhttpRequest({ method: "GET", url: "http://www.example.com/", onload: function(response) { alert(response.responseText); } });
GET request
GM_xmlhttpRequest({ method: "GET", url: "http://www.example.net/", headers: { "User-Agent": "Mozilla/5.0", // If not specified, navigator.userAgent will be used. "Accept": "text/xml" // If not specified, browser defaults will be used. }, onload: function(response) { // Inject responseXML into existing Object (only appropriate for XML content). if (!response.responseXML) { response.responseXML = new DOMParser() .parseFromString(response.responseText, "text/xml"); } GM_log([ response.status, response.statusText, response.readyState, response.responseHeaders, response.responseText, response.finalUrl, response.responseXML ].join("\n")); } });
POST request
When making a POST request, most sites require the Content-Type header to be defined as such:
GM_xmlhttpRequest({ method: "POST", url: "http://www.example.net/login", data: "username=johndoe&password=xyz123", headers: { "Content-Type": "application/x-www-form-urlencoded" }, onload: function(response) { if (response.responseText.indexOf("Logged in as") > -1) { location.href = "http://www.example.net/dashboard"; } } });
HEAD request
As defined in HTTP, you may issue a HEAD request to get the response headers, without receiving the entire response body.
GM_xmlhttpRequest({ url: "http://www.example.com", method: "HEAD", onload: function(response) { GM_log(response.responseHeaders); } });
Notes
1
Note that if the data
field contains form-encoded data, you usually must also set the header 'Content-Type': 'application/x-www-form-urlencoded'
in the headers
field.
2
Some headers may not actually work through GM_xmlhttpRequest.
For example, the Referer
header cannot be overriden.
[1]
[2]