отправка данных из ajax в spring controller

#ajax #spring-mvc

#ajax #spring-mvc

Вопрос:

         var form_data = {
            itemid: globalSourceItem.substr(globalSourceItem.indexOf("-")   1),
            columnName: jqInputs[0].value,
            displayName: jqInputs[1].value,
            format: jqInputs[2].value,
            KBE: jqInputs[3].value,
            dgroup: jqInputs[4].value,
            dupkey: jqInputs[5].value ,
            measurement: jqInputs[6].value ,
            times: new Date().getTime()
        };
        // console.log(form_data);
        // console.log($("#tourl").html());
        $.ajax({
            url: $("#tourl").html(),
            type: 'POST',
            datatype: 'json',
            data: form_data,
            success: function(message) {
                var j_obj = $.parseJSON(message);
                // console.log(j_obj);return false;
                if (j_obj.hasOwnProperty('success')) {
                    toastr.info('Item updated successfully');
                    setTimeout(function(){
                        window.location.reload();
                    },1000); 
                } else {
                    toastr.info('There was a problem.');
                }
            },
            error: function(xhr, textStatus, errorThrown) 
            {
                toastr.info('There seems to be a network problem. Please try again in some time.');
            }
        });

    }
  

Друзья, этот код работает для php, и мне нужно отправить те же данные в spring mvc через ajax, может кто-нибудь, пожалуйста, помогите мне с точным решением, где внести изменения, поскольку я поражен тем же сомнением примерно на 2 недели…

Комментарии:

1. С какой проблемой вы столкнулись в настоящее время?

Ответ №1:

 public class TestController {   
    @RequestMapping(value = "url", method = RequestMethod.POST)
    public ModelAndView action(@RequestBody FormData formData) {
        ...
    }
}

public class FormData { 
   private String itemid;
   public String getItemid() {
       return itemid;
   }
   public void setItemid(String itemid) {
       this.itemid = itemid;
   }    
   //...
}
  

Попробуйте что-то вроде этого. Вы должны иметь возможность сопоставлять объект JSON с объектом Java.

Может быть, вы могли бы использовать аннотацию @ResponseBody и преобразовать JSONObject в строку:

 @RequestMapping(value = "/ajax", method = RequestMethod.POST, produces="application/json")
@ResponseBody
public String ajax(@RequestBody ListDataDefinition listDataDefinition) { 
    System.out.println("id=" listDataDefinition.getItemid()); 
    int i=SchemaDAOI.updateldd(listDataDefinition); 
    String message="success"; 
    JSONObject obj = new JSONObject(); 
    try { 
        obj.put("success", "success"); 
    } 
    catch (JSONException e) { 
        e.printStackTrace(); 
    } 
    if(i==1){ 
        System.out.println("success"); 
    } 
    else{ 
        System.out.println("failure"); 
    } 
    return obj.toString(); 
    } 
}
  

Если вы отправляете строку для просмотра как responsbody, а set выдает как JSON, она должна обрабатываться как чистый JSON RQ.

Комментарии:

1. Привет, спасибо chmielu, это работает, я могу получить данные на стороне сервера, но я получаю статус ошибки как «Похоже, проблема с сетью. Пожалуйста, повторите попытку через некоторое время «. Я думаю, что я не возвращаю объект json из spring controller, не могли бы вы мне помочь, мой последний код

2. @RequestMapping(значение = «/ ajax», метод = RequestMethod. POST) общедоступный JSONObject ajax(@RequestBody ListDataDefinition listDataDefinition) { System.out.println(«id=» listDataDefinition.getItemId()); int i=SchemaDAOI.updateldd(listDataDefinition); Строка message=»успех»; JSONObject obj = новый JSONObject(); попробуйте { obj.put(«успех», «успех»); } catch (JSONException e) { e.printStackTrace(); } if(i==1){ System.out.println(«успех»); } else{ System.out.println(«сбой»); } возвращает obj; } }