出于好奇,我想知道最好的(最简单的,最快的,最短的,等等;选择)方式在JavaScript中执行GET请求而不使用AJAX或任何外部库。
它必须跨浏览器工作,不允许以可视方式扭曲托管网页或以任何方式影响其功能。
我不关心请求中的标头,只关注url-part。我也不关心请求的结果。我只是希望服务器在收到此请求时做一些副作用,所以解雇它就是最重要的。如果您的解决方案要求服务器特别返回某些内容,那也没关系。
我会将自己的建议作为一个可能的答案发布,但如果有人能找到更好的方法,我会很高兴!
答案 0 :(得分:8)
您是否尝试过使用Image对象?类似的东西:
var req = new Image();
req.onload = function() {
// Probably not required if you're only interested in
// making the request and don't need a callback function
}
req.src = 'http://example.com/foo/bar';
答案 1 :(得分:1)
function GET(url) {
var head = document.getElementsByTagName('head')[0];
var n = document.createElement('script');
n.src = url;
n.type = 'text/javascript';
n.onload = function() { // this is not really mandatory, but removes the tag when finished.
head.removeChild(n);
};
head.appendChild(n);
}
答案 2 :(得分:1)
我会使用Pekka的想法并使用隐藏的iframe,其优点是不会进行进一步的解析:对于图像,浏览器会尝试将结果解析为图像,以便动态创建script
标记浏览器将尝试将结果解析为JavaScript代码.. iframe是“命中并运行”,浏览器不关心那里有什么。
稍微更改自己的解决方案:
function GET(url) {
var oFrame = document.getElementById("MyAjaxFrame");
if (!oFrame) {
oFrame = document.createElement("iframe");
oFrame.style.display = "none";
oFrame.id = "MyAjaxFrame";
document.body.appendChild(oFrame);
}
oFrame.src = url;
}