从xhrPost调用spring控制器不会重定向

从xhrPost调用spring控制器不会重定向,spring,dojo,Spring,Dojo,我正在从dojoxhrpost调用一个spring控制器方法,需要从控制器方法重定向到一个新的html。但控制器返回到javascript中的dojo,而不是移动到新页面 我的javascript: var xhrArgs={ url:"/tradeIn/submitTradeIn", postData:dojo.toJson(tradeInDetails),

我正在从dojoxhrpost调用一个spring控制器方法,需要从控制器方法重定向到一个新的html。但控制器返回到javascript中的dojo,而不是移动到新页面

我的javascript:

var xhrArgs={
                        url:"/tradeIn/submitTradeIn",
                        postData:dojo.toJson(tradeInDetails),
                        handleAs:"text",
                        headers:{"Content-Type":"application/json"}
                        /*load:function(data){
                            console.log(data);
                            label=data;
                            if(data =="fail"){
                                location.reload(true);
                                window.location="/Fail";
                            }
                            else{
                                window.location="/success";



                            }
                        }*/
                }

                var deferred=dojo.xhrPost(xhrArgs);
我的spring控制器:

@RequestMapping(value="/tradeIn/submitTradeIn", method = {RequestMethod.POST})
public    String submitTradeIn(@RequestBody TradeInDetails tradeDetails) throws UnsupportedEncodingException{

    List<byte[]> labelList=new ArrayList<byte[]>();
    ShippingInfo shippingInfo=new ShippingInfo();
    shippingInfo.setAddress1(tradeDetails.getCustomerDetails().get(0).getAddress1());
    shippingInfo.setAddress2(tradeDetails.getCustomerDetails().get(0).getAddress1());
    shippingInfo.setCity(tradeDetails.getCustomerDetails().get(0).getCity());
    shippingInfo.setCompany(tradeDetails.getCustomerDetails().get(0).getCompany());
    shippingInfo.setDayPhone(tradeDetails.getCustomerDetails().get(0).getDayPhone());
    shippingInfo.setEmail(tradeDetails.getCustomerDetails().get(0).getEmail());
    shippingInfo.setEvePhone(tradeDetails.getCustomerDetails().get(0).getEvePhone());
    shippingInfo.setFirstName(tradeDetails.getCustomerDetails().get(0).getFirstName());
    shippingInfo.setLastName(tradeDetails.getCustomerDetails().get(0).getLastName());
    shippingInfo.setState(tradeDetails.getCustomerDetails().get(0).getState());
    shippingInfo.setZip(tradeDetails.getCustomerDetails().get(0).getZip());
    shippingInfo.setCountry(tradeDetails.getCustomerDetails().get(0).getCountry());
    List<ReturnRequestLabel> label; 
    List<TradeInClubs> tradeInList1= new ArrayList<TradeInClubs>();
    for(ClubDetails cl: tradeDetails.getClubDetails()){
        TradeInClubs tradeInclubs1=new TradeInClubs();
        tradeInclubs1.setClubMaterial(cl.getShaftType());
        tradeInclubs1.setClubType(cl.getClubType());
        tradeInclubs1.setManufacturer(cl.getClubManufacturer());
        tradeInclubs1.setModel(cl.getClubModel());
        tradeInclubs1.setTradeInValue(cl.getTradeInPrice());
        tradeInList1.add(tradeInclubs1);
    }
    try{

        ReturnFedexLabel returnFedexLabel = new ReturnFedexLabel();
        label=returnFedexLabel.fetchFedexLabel(tradeInList1, shippingInfo);
        byte[] labelImageData;

        String fedexLabelNumber=null;
        for(ReturnRequestLabel rl: label){
            labelImageData=rl.fedexReturnLabel.imageData;
            labelList.add(labelImageData);
            fedexLabelNumber=rl.trackingNumber;

        }
        File f=new File("label.jpg");
        BufferedImage img=ImageIO.read(new ByteArrayInputStream(labelList.get(0)));

        ImageIO.write(img,"JPEG",f);
        int id=tradeInDao.insertQuery(shippingInfo,tradeInList1,fedexLabelNumber);
        byte[] pdfData=fedexLabelToPdf.printFedexLabel(labelList);
        emailTradeIn.emailTradeInDetails(pdfData,tradeDetails.getCustomerDetails().get(0).getEmail(),tradeInList1,id);
        System.out.println("here");


    } catch (Exception e){
        logger.error(e.getMessage());
        return "fail";

    }



    return "success";//Base64.encodeBase64String(labelList.get(0));
}

它没有移动到成功页面。它只是停留在当前页面中,检查并查看延迟的内容,它可能是成功的

发件人:

xhrPost xhrPost将使用HTTPPOST创建一个Ajax请求 方法,通常用于向服务提交数据。它回来了 将数据发送到回调。回调被定义为对象的成员 用于在属性包中创建请求,或使用 dojo.Deferred.then方法

有关完整的详细信息和示例,请参阅dojo.xhrPost文档


如果需要从控制器更改页面,则不应该是ajax请求。如果您可以从客户端对其进行更改,那么您可以继续使用ajax请求并做出相应的响应

为什么要这样做?您使用的是Ajax,因此页面将返回到javascript结果,您应该在客户端处理它。另外,如果代码中没有重定向,重定向也不会起作用,但仍然会被浏览器透明地处理。