Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 本机ajax调用不会在302上重定向_Javascript_Ajax_Redirect_Httpresponse_Http Redirect - Fatal编程技术网

Javascript 本机ajax调用不会在302上重定向

Javascript 本机ajax调用不会在302上重定向,javascript,ajax,redirect,httpresponse,http-redirect,Javascript,Ajax,Redirect,Httpresponse,Http Redirect,我已经在谷歌上搜索了几个小时了。我已经阅读了关于Stackoverflow的十几个“答案”,它们都使用jQuery 这是常见的答案 ajax请求将跟随重定向afaik 嗯,没有 我试图通过原生JS AJAX从表单发送PUT [请不要告诉我使用jQuery。我通过PUT在jQuery中发现了一个bug ()所以我要绕过去] 这是我的代码片段 var xhr = new XMLHttpRequest(); xhr.open(method, url); xhr.setRequestHead

我已经在谷歌上搜索了几个小时了。我已经阅读了关于Stackoverflow的十几个“答案”,它们都使用jQuery

这是常见的答案

ajax请求将跟随重定向afaik

嗯,没有

我试图通过原生JS AJAX从表单发送PUT

[请不要告诉我使用jQuery。我通过PUT在jQuery中发现了一个bug ()所以我要绕过去]

这是我的代码片段

  var xhr = new XMLHttpRequest();
  xhr.open(method, url);
  xhr.setRequestHeader('Content-Type', 'application/json');
  xhr.send(data);
  xhr.onload = function (e) {
    if (xhr.readyState === 4) {
      if (xhr.status === 200) {
        console.log(xhr.responseText);
      } else {
        console.error(xhr.statusText);
      }
    }
  };
  xhr.onerror = function (e) {
    console.error(xhr.statusText);
  };
这个区块的工作非常好,我可以张贴,放置和删除没有问题。服务器接收数据并根据sent方法更新数据库

成功完成后,我的(基于SLIM的)PHP将返回一个302和一个要转到的URL

这个过程使用POSTMAN点击PHP,并转到正确的页面

打开Chrome工具/网络,它显示PHP返回的是302而不是200

My response对象包含responseText属性中页面的完整HTML

有趣的是,如果我硬编码一个错误的URL,浏览器就会转到我的404页面

你的想法?(请不要问我或告诉我使用jQuery)

编辑/补遗-----------------------

我发现重定向使用了与原始调用相同的方法

我在做什么

 PUT /user/1
重定向正在执行

 PUT http://myserver.test/
这是去的好地方。现在我明白405了

我没有定义PUT路由,因此405

我创建了一个PUT路由,它在POSTMAN中工作,但在Chrome和Firefox中仍然可以得到405

我有两个问题需要解决: 1) 更改重定向上的方法 2) 找出浏览器不喜欢307的原因,我找到了“a”解决方案。我不确定我是否喜欢,但是

  var xhr = new XMLHttpRequest();
  xhr.open(method, url);
  xhr.setRequestHeader('Content-Type', 'application/json');
  xhr.send(data);
  xhr.onload = function (e) {
    if (xhr.readyState === 4) {
        window.location.replace(xhr.responseURL);  // <---- solution
    }
  };
var xhr=new-XMLHttpRequest();
open(方法,url);
setRequestHeader('Content-Type','application/json');
发送(数据);
xhr.onload=函数(e){
if(xhr.readyState==4){

window.location.replace(xhr.responseURL)打开Chrome Tools/Network,它显示PHP返回的是302,而不是200。我有点困惑,你解释它做什么,就是你想要它做什么。我正在寻找浏览器跳转到304中定义的URI。你的意思是返回307吗,304没有被修改。302是一个重定向,但因为弄乱了requ而闻名是的,我错过了关于304的演讲,我是说302。我更正了。是的,307在这个例子中更有意义。现在我得到了307,后面是405。进展!差不多了