Le passage des données entre jQuery et la Servlet
J'ai un formulaire HTML:
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$('#convert').click(function(){
//pairno tis times ap tin forma
var amount = $('#amount').val();
var from = $('#from').val();
var to = $('#to').val();
//kano ta dedomena ena koino string
var dataString = "amount=" + amount + "&from=" + from + "&to=" + to;
$.ajax({
type: "POST",
url: "CurrencyConverter",
success: function(data){
//pairno ta dedomena
$('#results').show();
//vazo ta dedomena sto results div tag.
$('#results').html(data);
}
});
});
$('#swap').click(function() {
s1=$('#to').val();
s0=$('#from').val();
$('#to').val(s0);
$('#from').val(s1);
});
});
</script>
</head>
<body>
<div class="data">
<label for="from">Μετάτρεψε:</label>
<input type="text" name="amount" id="amount" value="1" />
</div>
<div class="data">
<label for="fromCurrency">από:</label>
<select name="from" id="from">
<option selected="" value="EUR">Euro - EUR</option>
<option value="USD">United States Dollars - USD</option>
<option value="GBP">United Kingdom Pounds - GBP</option>
<option value="CAD">Canada Dollars - CAD</option>
</select>
</div>
<div class="data">
<label for="to">σε:</label>
<select name="to" id="to">
<option value="USD">United States Dollars - USD</option>
<option value="GBP">United Kingdom Pounds - GBP</option>
<option value="CAD">Canada Dollars - CAD</option>
<option value="AUD">Australia Dollars - AUD</option>
<option value="JPY">Japan Yen - JPY</option>
</select>
</div>
<div class="data">
<input type="submit" value="Μετατροπή">
<input type="submit" name="swap" id="swap" value="αντάλλαξέ τα!">
</div>
</div>
<div id="results"></div>
</body>
</html>
Je veux extraire les données à partir de ce formulaire à l'aide du script sur le dessus et les envoyer à ma servlet.
Voici mon code de la servlet:
package com.example.web;
import com.example.model.*;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.lang.*;
import java.util.*;
public class CurrencySelect extends HttpServlet{
public void doPost(HttpServletRequest request,HttpServletResponse response)throws IOException, ServletException{
//response.setContentType("text/html;charset=UTF-8");
String from = request.getParameter("from");
String to = request.getParameter("to");
String amount = request.getParameter("amount");
CurrencyGenerator curr = new CurrencyGenerator();
String res = curr.GetCurrency(from,to,amount);
out.println(res);
}
}
Et voici mon web.xml
fichier:
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
Version="2.4">
<servlet>
<servlet-name>CurrencyConverter</servlet-name>
<servlet-class>com.example.web.CurrencySelect</servlet-class>
</servlet>
<servlet>
<servlet-name>CodeReturn</servlet-name>
<servlet-class>com.example.web.CodeReturn</servlet-class>
</servlet>
<servlet>
<servlet-name>Redirect</servlet-name>
<servlet-class>com.example.web.Redirect</servlet-class>
</servlet>
<servlet>
<servlet-name>ListenerTester</servlet-name>
<servlet-class>com.example.web.ListenerTester</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>CurrencyConverter</servlet-name>
<url-pattern>/CurrencyConverter.do</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>CodeReturn</servlet-name>
<url-pattern>/CodeReturn.do</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Redirect</servlet-name>
<url-pattern>/Redirect.do</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>ListenerTester</servlet-name>
<url-pattern>/ListenTest.do</url-pattern>
</servlet-mapping>
<context-param>
<param-name>report</param-name>
<param-value>report.html</param-value>
</context-param>
<listener>
<listener-class>com.example.model.MyServletContextListener</listener-class>
</listener>
</web-app>
Je veux imprimer le résultat dans mon formulaire html de la page dans un div que j'ai en fin de compte appelée les résultats. J'ai eu le même script fait avec php et tout fonctionnait bien, mais avec des servlets. Je peux obtenir mes résultats dans une nouvelle page, mais je ne peux pas les prendre dans la même page HTML. Comment puis-je le résoudre?
OriginalL'auteur Mpampinos Holmens | 2011-11-15
Vous devez vous connecter pour publier un commentaire.
Ici,
vous avez 2 problèmes:
Votre servlet est mappé sur
/CurrencyConverter.do
, mais pourtant vous êtes à essayer de l'appeler sur/CurrencyConverter
. Vous avez besoin de corriger l'URL.Vous n'êtes pas en passant la chaîne de requête
dataString
à tous. Vous avez besoin de passer commedata
option.Donc, cela devrait le faire:
Note que bien que rassembler la chaîne de requête, ainsi que vous-même peut fonctionner dans la plupart des cas, il échouera à chaque fois que les valeurs d'entrée contiennent des caractères spéciaux. Vous souhaitez passer un JS objet le long de la place, comme indiqué dans la Akhil de réponse. Mais beaucoup mieux est d'utiliser une
<form>
etjQuery.serialize()
. Voir aussi Calculatrice Simple avec JSP/Servlet et Ajax pour un coup d'envoi exemple.OriginalL'auteur BalusC
OriginalL'auteur Akhil Thayyil
Une page JSP est lui-même un servlet...le conteneur de servlet compile les coulisses. Donc, vous pouvez vous référer à l'objet de la requête à l'intérieur du fichier JSP lui-même. Donc, si l'action du formulaire est le nom de la page HTML elle-même, puis les résultats du formulaire sera visible. Ainsi, par exemple, vous pourriez mettre dans votre JSP:
Vous pouvez aussi avoir votre JSP point d'action à une servlet, et ensuite le servlet de redirection de la page JSP. Je ne me souviens pas des détails sur le dessus de ma tête, mais encore une fois, cela signifierait que les paramètres de la requête serait visible à la page JSP.
OriginalL'auteur dnuttle