【发布时间】: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><pre>"
+ JSON.stringify(data, null, 4) + "</pre>";
$('#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