如何在 JavaScript 中访问作为 AJAX 请求中的响应发送的自定义 Java 对象

How to access custom Java object sent as response in AJAX request, in JavaScript?

本文关键字:响应 对象 自定义 请求 Java AJAX JavaScript 访问      更新时间:2023-09-26

我正在开发一个Spring MVC应用程序,我需要在其中显示Trip对象的详细信息。以下是我的旅行模型:

@Entity
@Table(name="Trip")
public class TripModel {
    private String locationName;
    private String userName;
    @Id
    @Column(name="tripid")
    @GeneratedValue 
    private int tripId; 
    @Column(name="tripid")
    private int tripId;
    @Column(name="locationid")
    private int tripStopLocationId;
    @Column(name="datetime")
    private String tripStopDateTime;
    @Column(name="createts")
    private Date tripStopCreateTime;
    @Column(name="userid")
    private int createUserId;
    @Transient
    private List<ItemTransactionModel> itemTransactionModelList;
}

如何在 AJAX 中使用行程 ID 获取行程详细信息?TripModel 有一个 ItemTransactionModel 对象列表。

以下是我的 ajax 代码:

jQuery.ajax({
        url: '<c:url value="/trip/tripdetailsbyajax" />',
        type: 'POST',
        data: "tripId="+tripId,
        cache:false,
        success:function(response){
            alert("response = " + response);
        },
        error:function(jqXhr, textStatus, errorThrown){
            alert(jqXhr);
            alert(textStatus);
            alert(errorThrown);
        }
    });

以下是我的控制器方法:

@RequestMapping(value = "/tripdetailsbyajax", method = { RequestMethod.POST })
    public @ResponseBody TripModel getTripDetailsByAjax(int tripId) {
        TripModel tripModel = null;
        tripModel = tripService.getTripModel(tripId);
        return tripModel;
    }

我们如何将 TripModel 对象作为 AJAX 响应发送,以及如何在 JavaScript 中访问它?TripModel 对象有一个 ItemTransactionModel 对象列表。

您需要进行一些更改才能将响应作为 JSON 格式,

dataType:json 添加到您的 ajax 请求中,以便它知道它应该需要来自服务器的 JSON

jQuery.ajax({
        url: '<c:url value="/trip/tripdetailsbyajax" />',
        type: 'POST',
        dataType: 'json',

在处理程序方法的 RequestMapping 中添加 produces="application/json"。这将提示框架将响应转换为的表示形式

@RequestMapping(value = "/tripdetailsbyajax", method = { RequestMethod.POST }, produces="application/json")

最后,访问成功方法中的值,如 response.userName

请注意,请确保您的实体具有适当的getter/setter,负责将对象转换为JSON的jackson库,处理属性