gpt4 book ai didi

javascript - ModelAndView 不重定向,但给出正确的响应

转载 作者:行者123 更新时间:2023-12-02 13:25:05 25 4
gpt4 key购买 nike

我有以下发出请求的函数:

function postIngredient(action, options) {
var xhr = new XMLHttpRequest();
xhr.open(options.method, action, true);
xhr.setRequestHeader('Content-Type', 'application/json; charset=UTF-8');
xhr.setRequestHeader(options.security.header, options.security.token);

// send the collected data as JSON
xhr.send(JSON.stringify(options.params));

xhr.onloadend = function () {
// done
};
}

该函数触发服务器上的一个方法,该方法基本上返回一个 ModelAndView 对象:

...   
ModelAndView mav = new ModelAndView("redirect:/recipies/edit?id=1");
....
return mav;

成功完成 post 请求后,将完成以下 GET 请求: enter image description here

因此,在请求的“预览”选项卡中,我有应该重定向的正确页面,但浏览器中没有重定向。该页面与最初调用 postIngredient() 函数的位置保持不变。那么如何进行重定向呢?

最佳答案

您正在通过 JavaScript 中的 XMLHttpRequest 对象发出 ajax 请求。该请求通过重定向进行响应,XMLHttpRequest 对象遵循重定向,调用编辑,然后将结果(编辑页面的完整页面内容)发送到您的 xhr.onloadend() 方法。浏览器窗口本身不参与其中,也不知道内部发送了重定向。

如果您想将帖子保留为 xhr 请求并且不切换到标准表单帖子,您可以更改帖子处理方法以仅返回字符串:

import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ResponseBody;

@ResponseBody
public ResponseEntity<String> myPostProcessingIngredientsMethod(..put args here...) {
... do something ...
return new ResponseEntity<>("/recipies/edit?id=1", HttpStatus.OK));
}

然后在执行 xhr 请求的 Javascript 代码中,从结果数据中获取结果字符串,并使用类似内容重定向您的浏览器

window.location.href = dataFromResult;

@ResponseBody注解防止 Spring 将返回的字符串解释为 View 名称并将该字符串包装在 ResponseEntity 中。如果出现问题,您可以返回错误代码。

关于javascript - ModelAndView 不重定向,但给出正确的响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43419667/

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