我设法获得了一个使用jQuery的AJAX请求,但由于跨域问题,我必须使用内置的GM_xmlhttprequest。每次返回字符串时,都会在字符串中的每个字符之前附加空字符。这是jQuery中的工作请求:
var msg = { domain: "BEGIN", command: 'example'};
$.ajax({
url: 'http://127.0.0.1:2600',
type: 'GET',
contentType: 'application/json',
data: msg,
success: function(data) {
console.log('inside');
$('body').html(data);
},
error: function(xhr, error) {
console.debug(xhr); console.debug(error);
}
});
非工作Greasemonkey请求:
var url = "http://127.0.0.1:2600/";
var msg = { domain: "BEGIN", command: 'example'};
msg = url+$.param(msg);
GM_xmlhttpRequest({
method: "GET",
url: msg,
onload: function(response) {
domains = response.responseText;
GM_setValue("domainTable", domains);
alert("data stored");
}
});
我已尝试使用overideMimeType并将响应类型设置为标题中的文本但我仍然得到相同的奇怪空字符。我不能在这里粘贴字符串,因为它只会忽略空字符,但是javascript的charCodeAt会为偶数索引处的所有字符吐出0。我显然可以删除空字符或每次删除响应中的每个偶数字符,但我希望有一个更优雅的解决方案。我假设它的要求有问题,但我不能为我的生活找出什么。服务器响应的响应完全相同,但客户端对它的解释却不同。