2
回答
Spring MVC实现远程调用并获取返回值
华为云实践训练营,热门技术免费实践!>>>   

ajax跨域请求:

$("#jifei").click(function() {

        Tips.confirm("确认计费?", function() {
            var cmd_uuid = $('input[name="cmd_uuid"]').val();
            $.ajax({
                url : "http://127.0.0.1:8083/tally/command/tally-order-reset",
                data : {
                    "cmd_uuid" : cmd_uuid
                },
                type : "get",
                success : function(re) {
                    Tips.tips(re.msg,re.success);
                },
                error : function(data) {
                    Tips.tips(data.msg+"返回失败");
                }
            });
        });

在被请求项目里面的spring.xml中加上:(注意:这里需要引用spring4.2及版本更高的,否则不支持<mvc:cors>)

<mvc:cors>
        <mvc:mapping path="/**" allowed-origins="*" allow-credentials="true" max-age="1800" allowed-methods="GET,POST,OPTIONS"/>
 </mvc:cors>

如果添加了拦截器需要把/tally/command/tally-order-reset加上去:

<mvc:interceptor>
            <mvc:mapping path="/**" />
            <mvc:exclude-mapping path="/tally/command/tally-order-reset" />
            <bean class="com.feiliks.hn.common.interceptor.PermissionInterceptor" />
 </mvc:interceptor>

然后再被请求的tally-order-reset方法上面加上:@CrossOrigin 代码如下

@CrossOrigin(origins = "*", maxAge = 3600)
@RequestMapping("tally-order-reset")
@ResponseBody
public ResponseModel reset(Long cmd_uuid){
        Boolean ret = true;
        ret = this.redisDao.setIfAbsentValue("tally-order-reset:" + cmd_uuid.toString(), 1);
        if (ret){
            this.redisDao.expire("tally-order-reset:" + cmd_uuid.toString(), 3, TimeUnit.MINUTES);
            this.tallyOrderService.reset(cmd_uuid);
            this.redisDao.delKey("tally-order-reset:" + cmd_uuid.toString());
        }else{
            ErrorType et = this.redisDao.getHashValue(RedisCacheTableKey.KEY_ERROR_TYPE, "S0001", ErrorType.class)==null?new ErrorType("S0001") : this.redisDao.getHashValue(RedisCacheTableKey.KEY_ERROR_TYPE, "S0001", ErrorType.class);
            return super.fail(et.getTrace(), et);
        }
        return super.success("计费成功!");
        
    }

通过以上方法,就能够实现ajax跨域请求并能够获取返回值,希望能给大家帮助。

举报
大河向东流啊
发帖于3个月前 2回/667阅
顶部