点击提交按钮后,我的表单和页面刷新,没有任何内容发送到datebase。
subforum.js中的代码
$(document).on('click','#submit',function(e) {
var user = JSON.parse(sessionStorage.getItem("ulogovan"));
console.log("usao u submit");
alert("Usao");
var dataObject = JSON.stringify({
'title': $('#titleSubforum').val(),
'description': $('#descriptionSubforum').val(),
'iconPath': $('#pictureSubforum').val(),
'mainModerator': user.username,
'rules': $('#rulesSubforum').val()
});
alert($('#rulesSubforum').val());
$.ajax({
type : 'POST',
url : "../WebProjekat/rest/subforums/create",
contentType : 'application/json',
dataType : "json",
data: dataObject,
success : function(data) {
console.log("USAO U CUVANJE ");
alert("all good");
window.location.href = "index.html";
},
error : function(XMLHttpRequest, textStatus, errorThrown) {
alert("something wrong");
console.log(textStatus);
console.log(user);
}
});
});
SubforumController.java中的代码
package controllers;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import beans.Subforum;
import services.SubforumService;
@Path("/subforums")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public class SubforumController {
private SubforumService subforumService = new SubforumService();
@GET
public List<Subforum> getSubforums() {
return subforumService.getAllSubforums();
}
@POST
@Path("/create")
public Subforum createSubforum(Subforum subforum) {
System.out.print(subforum.getTitle());
return subforumService.createSubforum(subforum);
}
SubforumService.java中的代码
package services;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import datebase.DatebasePath;
import beans.Subforum;
public class SubforumService {
public SubforumService() {
}
private Map<String, Subforum> subforums = DatebasePath.getSubforums();
public Subforum createSubforum(Subforum subforum) {
subforums.put(subforum.getTitle(), subforum);
DatebasePath.saveData(DatebasePath.subforumsPath);
return subforum;
}
public List<Subforum> getAllSubforums() {
return new ArrayList<Subforum>(subforums.values());
}
}
DatebasePath很好,因为我硬编码了subforum对象,并且写入.txt文件。我认为问题出在subforum.js和SubforumController.java
之间答案 0 :(得分:0)
点击“提交”按钮后,我的表单和页面会刷新
这通常是form
发布时间而非您的自定义$.ajax POST
代码引起的。
并且没有任何内容发送到数据库。
当$.ajax POST
异步发生时,表单的帖子会首先发生,刷新您的页面,从而不会点击您自己的提交处理程序。
有两种相对简单的选择:
e.preventDefault
例如
$(document).on('click','#submit',function(e) {
e.preventDefault();
// remaining code
更改
<input type='submit' id='submit'>submit</input>
到
<input type='button' id='submit'>submit</input>