/ / No se puede llamar al controlador Spring cuando se usa ajax - ajax, spring, url, model-view-controller, controller

No se puede llamar al controlador Spring cuando se usa ajax - ajax, spring, url, model-view-controller, controller

Tengo un problema cuando uso ajax con Spring

Quiero el resultado de la lista de filtros cuando selecciono la regióndesde el cuadro de selección o ingrese el nombre de la tienda en la pantalla, así que mi idea es usar Ajax para resolver esto. Pero Ajax no puede llamar a un controlador específico lo que está en el atributo url de $ .ajax

Debajo están mis archivos:

  1. JSP:

ID de CSS para se aplica

<form:form modelAttribute="appliedStoreInput" id="appliedStoreSearch">

<form:select path="regionId" cssClass="form-control">
<form:option value="" label="Toàn quốc"></form:option>
<form:options items="${listRegions}" />
</form:select>

<input type="email" class="form-control"placeholder="Tìm kiếm cửa hàng" name="storeNameInp" />
<div class="input-icon">
<i class="fa fa-search"></i>
</div>

</form:form>
  1. Ajax

    $(document).on("change","#appliedStoreSearch",function(e){
    var input = $("#appliedStoreSearch").serialize();
    e.preventDefault();
    $.ajax({
    url:"/promotions_controller/search_applied_store_ajax",
    method:"POST",
    contentType : "application/json;",
    dataType:"json",
    data:input,
    success: function(data){
    }
    });
    e.preventDefault();
    });
    
  2. Controlador :

    @RequestMapping(value="/search_applied_store_ajax",method=RequestMethod.POST,produces="application/json" )
    public @ResponseBody List<AppliedStoreDto> searchAppliedStoreAjax( @ModelAttribute("appliedStoreInput")AppliedStoreInputDto appliedStoreinput){
    
    System.out.println("in ra 1 so thu gi go");
    
    List<AppliedStoreDto> listAppliedStore = null;
    
    appliedStoreinput.setCompanyId(7);
    
    try {
    
    // get list applied store
    listAppliedStore = promotionLogic.findAllAppliedStore(appliedStoreinput);
    
    } catch (Exception e) {
    
    logger.error(e.getMessage());
    
    }
    
    return listAppliedStore;
    }
    

He depurado Javascript y luego recuperé datosdesde el formulario, pero Ajax todavía no puede llamar al controlador Spring (/ promotions_controller / search_applied_store_ajax). No hay nada de lo que se muestra en la consola.

Por favor ayudame, tks todos !!!!

Respuestas

0 para la respuesta № 1

Dado que su llamada ajax tiene contentType de "application / json;" Me gustaría agregar consums = "application / json" a su RequestMapping e intercambiar ModelAttribute por RequestBody


0 para la respuesta № 2

La respuesta de Sean es básicamente correcta. Simplemente agregue los detalles exactos. La declaración de la función debería ser similar a la siguiente

@RequestMapping(value="/search_applied_store_ajax",method=RequestMethod.POST,produces = { MediaType.APPLICATION_JSON_VALUE}, consumes = {
MediaType.APPLICATION_JSON_VALUE} )

public @ResponseBody List searchAppliedStoreAjax (@RequestBody AppliedStoreInputDto applyStoreinput) {