私は動的なWebプロジェクトを持っており、リモートサーバー上のmysqlデータベースでデータを送信したいと考えています。 だから、私は、ファイルlibraryPersistentBean.java
にこのコードを使用してREST APIを持っている:Java rest APIを使用したjavascriptでのポストリクエストは機能しません
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を試していて、何も変わりません。 – Adrien