根據its documentation,GM_xmlhttpRequest
應該能夠將data
參數作爲其參數的一部分。爲什麼GM_xmlhttpRequest忽略其數據參數?
但是,我似乎無法得到它的工作。
我有呼應給它的參數,一個簡單的服務器:
require 'sinatra'
require 'json'
get '/' do
JSON.dump params
end
post '/' do
JSON.dump params
end
而只是試圖將一些數據發送到服務器的簡單的Greasemonkey腳本。 它試圖將數據傳遞作爲URL查詢參數和POSTDATA:
// ==UserScript==
// @name PostDataTest
// @namespace Test
// @description Simple test of GM_xmlhttpRequest's data parameter
// @include http://localhost:4567/
// @version 1
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js
// @grant metadata
// @grant GM_xmlhttpRequest
// ==/UserScript==
var url = '/?q0=0&q1=1';
var data = 'd0=0&d1=1'
GM_xmlhttpRequest({ method: 'POST', url: url, data: data, onload: function(r){
console.log('gm:' + r.responseText);
}});
$.post(url, data, function(d,s,r){
console.log('jq:' + r.responseText);
});
當我使用jQuery POST POSTDATA,它工作正常,但我張貼使用GM_xmlhttpRequest
任何POSTDATA被忽略:
jq:{"q0":"0","q1":"1","d0":"0","d1":"1"}
gm:{"q0":"0","q1":"1"}
這使我相信,GM_xmlhttpRequest
實際上並沒有使用我給它的data
參數。 (我不確定b/c我無法在Firebug中監控GM_xmlhttpRequest
的網絡活動)。
這是怎麼回事?我搞砸了嗎? API是否轉移?我如何使用GM_xmlhttpRequest
發佈數據而不將其打包到URL中?
啊,它甚至[在文檔中](http://wiki.greasespot.net/GM_xmlhttpRequest#POST_request)。哎呦。 – rampion 2013-02-12 21:37:50
[修改GM自動設置此標題已被考慮並已被解除](https://github.com/greasemonkey/greasemonkey/issues/1032)。 – rampion 2013-02-12 21:41:22