嘿我有一个按下按钮时调用的ajax请求,但是servlet映射不起作用。按下按钮时不会进入控制器。 这是向控制器发出ajax请求的脚本。
<script type="text/javascript">
function getData() {
var dataToBeSent = {
uName : $("#jsonResponse").text() //
};
$.ajax({
url : 'something/testing', // Your Servlet mapping or JSP(not suggested)
data : dataToBeSent,
type : 'POST',
dataType : 'html', // Returns HTML as plain text; included script tags are evaluated when inserted in the DOM.
success : function(response) {
$('#outputDiv').html(response); // create an empty div in your page with some id
},
error : function(request, textStatus, errorThrown) {
alert(errorThrown);
}
});
};
</script>
#jsonResponse是首先动态分配的
。 这是控制器:
@Controller
@RequestMapping("/something")
public class Test {
@RequestMapping("/testing")
public void test(@RequestBody String yey){
Connection conn = null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost/api?user=root&password=1234");
} catch (SQLException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
String query = "INSERT INTO test(Id, nume) value (default, ?)";
PreparedStatement preparedStmt;
try {
preparedStmt = conn.prepareStatement(query);
preparedStmt.setString (1, yey);
preparedStmt.execute();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
System.out.println(yey);
}
}
答案 0 :(得分:0)
我认为在你的servlet中,你忘了设置你的servlet应该监听的POST或GET方法类型。在你ajax你发送了一个POST请求,但是你的servlet中没有提到请求的类型
@RequestMapping(value = "/something/testing", method = POST)
我认为这可能适合你