gpt4 book ai didi

javascript - XMLHttpRequest 将 url 作为响应文本发送,Firefox 不会重定向

转载 作者:行者123 更新时间:2023-11-28 10:46:19 24 4
gpt4 key购买 nike

我有一些 JavaScript 可以将 XMLHttpRequest 发送到 PHP 文件。这个 PHP 文件发送一个响应,而 javascript 应该创建一个 URL 并重定向到它,使用响应文本作为参数。在所有其他浏览器中,它工作正常,但 Firefox 不会在 URL 中包含响应文本。

这是 JavaScript 示例:

var xhr = new XMLHttpRequest();
xhr.open('POST', 'filename.php', true);
xhr.onreadystatechange = function(e){
var id = e.currentTarget.responseText;
var urlWithId = "restofurl?id=" + id;
window.location.href = urlWithId;
}
xhr.send(fd);

并且 filename.php 目前只是一个数字:

<?php
echo "3";
?>

我尝试将 url 的其他部分(直到整个 url)放入 php 部分,而 Firefox 总是准确地删除该部分。我还尝试将响应多次复制到不同的变量,逐个字符地复制它,将其放入仅再次返回输入的函数中,...

这只会在我自己的计算机上,所以我不需要担心任何安全问题,所以我主要是在寻找一种简单的方法来欺骗它,而不是专业的方式。有人知道吗?

最佳答案

这是一个基本示例,您实际上必须测试 readyState 状态。如果我没记错的话,在发送请求之前设置事件函数也更安全(不太确定)。

xhr = new XMLHttpRequest();

xhr.onreadystatechange = function() {
if (this.readyState == 4) {
//do something with this.responseText
}
};
xhr.open("POST", url, true);
xhr.send();

编辑:这是我使用框架来支持旧浏览器的原因之一,但这不是答案。更准确地说,在过去(现在?),浏览器用于实现奇异的功能。我已经很长一段时间没有直接使用 XHR 对象了,上次是使用加载栏( Canvas )上传文件。它向您展示了处理某些事情的基本方法。这更长并且有点过时,但是,它确实有效。

function customXHR(){
if(window.XMLHttpRequest){
return new window.XMLHttpRequest;
}else{
try{ //the weird ones
return new ActiveXObject("MSXML2.XMLHTTP.3.0");
}
catch(ex){
return null;
}
}
}

var xhr = customXHR(), pleaseStop = false, startDraw = false;

if(xhr){
xhr.addEventListener('load', function(e){
var jsonRep;
if(!pleaseStop){
//did use a JSON response
jsonRep = $.parseJSON(e.target.responseText);
//do the rest, we finished
}
}, false);
xhr.addEventListener('error', function(e){
//error
pleaseStop = true;
}, false);
xhr.upload.addEventListener('progress', function(e){
//why not let this as an example!
//file_size must be retreive separately, i fear
if(e.lengthComputable && file_size > 0 && !pleaseStop && startDraw){ draw_progress(e.loaded / file_size); }
}, false);
xhr.addEventListener('loadstart', function(e){
//can be used too
}, false);
xhr.addEventListener('readystatechange', function(e){
if(e.target.status == 404 && !pleaseStop){
//error not found
pleaseStop = true;
}
if(e.target.readyState == 2 && e.target.status == 200){
startDraw = true;
}
/*if(e.target.readyState == 4){
//not used here, actually not exactly the same as 'load'
}*/
}, false);

xhr.open("POST", url, true);
xhr.send();
} //else no XHR support

关于javascript - XMLHttpRequest 将 url 作为响应文本发送,Firefox 不会重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42231012/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com