jquery调用spring mvc接口返回字符串匹配

  背景:有个增删改页面,用jquery祭出ajax异步调用接口,spring mvc响应对象是个json字符串,jquery根据响应结果判断,若是删除成功给出提示。那么问题来了,接口里响应的字符串怎么匹配页面的字符串来判断是否删除成功?jquery

  具体场景以下:ajax

  jquery文件spring

    getCacheDate: function(cacheName, key, operationType) {
      var _this = this;
      $.ajax({
        url: _this.host + "getCacheData",
        dataType: "json",
        method: "post",
        data: {
          cacheName: cacheName,
          key: key,
          operationType: operationType
        },
        success: function(result) {
          $(".loading").addClass("loading-hide");
          if(result == "delete success"){
            _this.jsonData = {};
            $(".json-renderer").trigger("DeleteDataSuccess");
          }else{
            _this.jsonData = result;
            $(".json-renderer").trigger("GetDataSuccess");
          }
        },
        error: function(err) {
          console.log(err);
          $(".loading").addClass("loading-hide");
          $(".json-renderer").trigger("GetDataFailed");
        }
      });
    },

  spring controller类json

    @RequestMapping(value = "/getCacheDate", method = RequestMethod.POST, produces = "application/json;charset=utf-8")
    public @ResponseBody String getCacheDate(MemcacheBeanRequest memcacheBeanRequest)
    {
        // 获取缓存操做信息
        String operationType = memcacheBeanRequest.getOperationType();
        String cacheName = memcacheBeanRequest.getCacheName();
        String key = memcacheBeanRequest.getKey();
        
        if (StringUtils.isEmpty(operationType) || StringUtils.isEmpty(cacheName) || StringUtils.isEmpty(key))
        {
            return null;
        }
        
        // 执行缓存操做,获得结果
        return memcacheViewService.doMemcached(operationType, cacheName, key);
    }

  看到这里很明显了,个人getCacheData接口必须返回delete success这个字符串,去匹配jquery里的result字符串对象,才能提示删除成功。问题转化为Controller接口getCacheData返回什么。若是想固然的觉得就返回字符串"delete success",那么很抱歉,这是不对的,由于Controller注解@ResponseBody要求咱们返回的是一个json字符串,而不仅仅是一个纯字符串。假如getCacheData真的返回"delete success",那么页面会进入error分支,而不是success分支,由于页面没法解析该result文本:缓存

[object Object]
memcacheview.js (208,11)
   {
      [functions]: ,
      __proto__: { },
      readyState: 4,
      responseText: "delete success",
      status: 200,
      statusText: "parsererror"
   }

  到这里问题又转化为响应出去的json是什么。咱们知道json是键值对格式的,因此不能单纯这样响应"{\"delete success\"}",这种格式同样是页面没法解析的。咱们知道value确定就是"delete success",那么key我这里选用msg,getCacheData接口返回"{\"msg\":\"delete sucess\"}",jquery判断条件改成if(result.msg == "delete sucess"),问题解决。mvc

相关文章
相关标签/搜索