【发布时间】:2017-03-11 03:45:13
【问题描述】:
我有一个动态 Web 项目,我想在远程服务器上的 mysql 数据库上发送数据。
因此,我在文件libraryPersistentBean.java 中有一个带有此代码的 REST api:
public void addDemande(DemandeInscription demande) {
Connection con = null;
String url = "jdbc:mysql://my-ip:3306/my-database-name?useSSL=false";
String driver = "com.mysql.jdbc.Driver";
String userName = "my-username";
String password = "my-password";
// List<DemandeInscription> demandes = new ArrayList<DemandeInscription>();
try {
Class.forName(driver).newInstance();
con = DriverManager.getConnection(url , userName, password);
PreparedStatement st =
con.prepareStatement("insert into demandeInscription(name, city, address, food, type, email) values( ?, ?, ?, ?, ?, ?)");
st.setString(1,demande.getName());
st.setString(2,demande.getCity());
st.setString(3,demande.getAddress());
st.setString(4,demande.getFood());
st.setString(5,demande.getType());
st.setString(6,demande.getEmail());
// int result = st.executeUpdate();
} catch (SQLException ex) {
ex.printStackTrace();
} catch (InstantiationException ex) {
ex.printStackTrace();
} catch (IllegalAccessException ex) {
ex.printStackTrace();
} catch (ClassNotFoundException ex) {
ex.printStackTrace();
}
}
我在这里调用这个函数:
@POST
@Produces(MediaType.TEXT_HTML)
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public void post(@FormParam("name") String name, @FormParam("city") String city, @FormParam("address") String address, @FormParam("food") String food,
@FormParam("type") String type, @FormParam("email") String email) throws IOException {
DemandeInscription demande = new DemandeInscription(name, city, address, food, type, email);
LibraryPersistentBean libraryPersistentBean = new LibraryPersistentBean();
libraryPersistentBean.addDemande(demande);
}
还有我的 javascript 文件,我有:
function sendInscription(){
var name = document.getElementById("name").value;
var city = document.getElementById("city").value;
var address = document.getElementById("address").value;
var food = document.getElementById("food").value;
var type = document.getElementById("type").value;
var email = document.getElementById("email").value;
var xhr = new XMLHttpRequest();
xhr.open('POST', 'rest/demandes');
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.onreadystatechange = function() {
if(xhr.readyState == 4 && xhr.status == 200) {
alert(xhr.responseText);
}
}
xhr.send('name=' + name + '&city=' + city + '&address=' + address + '&food=' + food + '&type=' + type + '&email=' + email);
}
所以,我没有错误,但是经过测试,我在数据库中什么都没有。 你知道为什么它不起作用吗?
【问题讨论】:
-
我认为您的代码永远不会到达 post 方法。您应该在 xhr.open 中指定完整的 URL 路径。
-
调试并检查当请求到达服务器时你得到了什么。
-
我已经尝试过使用完整的 URL,它并没有改变任何东西。
-
我不知道如何使用调试模式...
标签: javascript java mysql post xmlhttprequest