index.jsp
前のデータにデータを追加するAjax?
<input type="text" onfocusout="show(this.value)" />
<div id="output"></div>
<script type="text/javascript">
function show(cat)
{
var output = document.getElementById("output");
$.ajax({
type:"get",
url:"fetchdata",
data:"cat="+cat,
success:function(responseJson){
output.innerHTML = responseJson;
}
});
}
fetchdata.java
public class fetchdata extends HttpServlet {
Connection con =null;
PreparedStatement ps = null;
ResultSet rs = null;
ArrayList<String> pname = new ArrayList();
ArrayList<String> iname = new ArrayList();
ArrayList<String> cname = new ArrayList();
ArrayList<Double> price = new ArrayList();
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String cat = request.getParameter("cat");
PrintWriter out= response.getWriter();
try {
Class.forName("com.mysql.jdbc.Driver");
con= DriverManager.getConnection("jdbc:mysql://localhost:3306/dealtime","root","root");
ps = con.prepareStatement("Select images.product_name,image_name,company_name,price "
+ "from images,products where images.product_name = products.product_name AND "
+ " category_name = ?");
ps.setString(1,cat);
rs=ps.executeQuery();
while(rs.next())
{
pname.add(rs.getString("product_name"));
iname.add(rs.getString("image_name"));
cname.add(rs.getString("company_name"));
price.add(rs.getDouble("price"));
}
String json =new Gson().toJson(pname);
response.setContentType("application/json");
out.println(json);
} catch (ClassNotFoundException | SQLException ex) {
Logger.getLogger(fetchdata.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
上記のコードが正常に動作しているが、複数のAJAXリクエストが行われたときにデータがIは、受信したデータに付加されています以前のAjaxリクエストからdiv
を新しいデータのみで更新したいだけでなく、複数のオブジェクトをレスポンスとして送信し、そのオブジェクトから値を抽出する方法を知りたいと考えています。
これは実際には意味がありません。あなたはjsonレスポンスをhtmlとして扱い、 'output.innerHTML = responseJson;を実行するとappendがない場合、前のhtmlが置換されます – charlietfl
@charlietflはい以前のhtmlを置き換える必要がありますが、なぜそれがしないのかわかりません同じ。 –
これを再現するデモを作成します。 'show()'の 'cat'も定義されていません。ブラウザのコンソールでエラーが発生していませんか?表示されたコードは失敗するはずです – charlietfl