#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; } }