【问题标题】:I tried to fetch my database content and display using Ajax but I see this error我尝试使用 Ajax 获取我的数据库内容并显示,但我看到了这个错误
【发布时间】:2021-07-08 20:37:46
【问题描述】:

错误:

这个请求标识的资源只能生成 具有根据请求不可接受的特性的响应 “接受”标题。

这是我的 Ajax 代码:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script type="text/javascript">
/*  function new_element(){ */
  
$(document).ready(function(){
$("#search").click(function(){
    console.log("fetched list");
    $.ajax({
        url: "http://localhost:8080/SpringMvcJdbcTemplate/listContact",
        type : "GET",
        dataType : 'json',
        /* contentType : "application/json", */
        accept : "application/json",
        
        success : function(data) {
            alert(this.getResponseHeader("Content-Type"));
            console.log("SUCCESS: ", data);
          display(data);
      },
      error : function(e) {
          console.log("ERROR: ", e);
          display(e);
      }
    
    });
    });
});
function display(data) {
    console.log("inside func list");
    var json = "<h4>Ajax Response</h4>&lt;pre&gt;"

            + JSON.stringify(data, null, 4) + "&lt;/pre&gt;";
    $('#feedback').html(json);
}

</script>

控制器类

@JsonView(Views.Public.class)
@RequestMapping(value = "/listContact", 
                method = RequestMethod.GET,
                produces=MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public AjaxResponseBody listContact(ModelAndView model) throws IOException {
        List<Contact> listContact = contactDAO.list();
        System.out.println("listContact");
        List<Contactdup> listContdup = new ArrayList<Contactdup>();
        Contactdup contactdup = null ;
        AjaxResponseBody result = new AjaxResponseBody();
      
        for(Contact contact:listContact) {
            contactdup = new Contactdup();
            contactdup.setFname(contact.getFname());
            System.out.println("inside for");
            System.out.println(contact.getFname());
            listContdup.add(contactdup);    
        }
        result.setResult(listContdup);
        result.setCode("200");
        result.setMsg("");
    return result;
    
}

AjaxResponseBody:

package ajaxrespose;

import java.util.List;

import com.fasterxml.jackson.annotation.JsonView;

import net.codejava.spring.model.Contactdup;
import net.codejava.spring.model.Views;



public class AjaxResponseBody {
    
    public List<Contactdup> getResult() {
        return result;
    }

    public void setResult(List<Contactdup> result) {
        this.result = result;
    }

    @JsonView(Views.Public.class)
    String msg;
    
    @JsonView(Views.Public.class)
    String code;

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    @JsonView(Views.Public.class)
    List<Contactdup> result;
}

【问题讨论】:

  • 您的 ajax accept : "application/json" 和您的 Java 代码生成 MediaType.APPLICATION_JSON_VALUE。这是一个等效于 MediaTypeAPPLICATION_JSON (application/json) 的字符串。保持java到方法产生MediaTypeAPPLICATION_JSON
  • 当我试图改变 (MediaType.APPLICATION_JSON)Type mismatch: cannot convert from MediaType to String[] 我得到这个错误
  • 您能发布AjaxResponseBody 类吗?进一步说明result.setResult 的类型是什么?
  • 发布的 AjaxResponseBody
  • result.setResult 类型为数组List

标签: java json ajax spring spring-mvc


【解决方案1】:

您调用的路由可能没有返回内容类型“application/json”。

【讨论】:

  • 帮助我找到了获取 Ajax 调用的方法,谢谢
猜你喜欢
  • 1970-01-01
  • 2022-07-26
  • 1970-01-01
  • 1970-01-01
  • 2019-10-25
  • 1970-01-01
  • 1970-01-01
  • 2022-11-26
  • 2017-09-15
相关资源
最近更新 更多