【问题标题】:HTML+Ajax+servlet not workingHTML+Ajax+servlet 不工作
【发布时间】:2014-12-29 04:01:44
【问题描述】:

嗨,我在我的程序中尝试了一个基于 servlet 的 ajax,当我单击按钮时,我使用带有按钮和文本框的 html 页面,它应该向服务器发出一些 ajax 请求,完成一些计算并在同一页面中返回结果

<html>
    <head>
        <title></title>


    </head>
    <body>
       <h3>Ajax in servlets</h3>

        <div id="change"> hi there</div>
        <input type="text" id="fname" name="solo">
        <input type="button" align="center" value="Ajax" onclick="ajaxreq()" />
    </body>
</html>

在这个 html 页面中的一个文本框和一个按钮,当我单击按钮时,它应该执行以下 java 脚本函数

 var xmlreq=null;
            var a=document.getElementById("fname");
            function ajaxreq(){


                if(window.XMLHttpRequest){
                    xmlreq=new XMLHttpRequest();

                }
                    else if(window.ActiveXObject){
                        xmlreq=new ActiveXObject("Microsoft.XMLHTTP");
                    }
                    try{
                  xmlreq.onreadystatechange=response;
                     xmlreq.open("GET","Servlethello?an=+a",true);
                        xmlreq.send();

        }
                    catch(e){

                        alert("some error")
                    }
    }
function response(){
var res=xmlreq.responseText;
document.write(res);
alert(res);
document.getElementById("change").innerHTML=res;

                  }








        </script>
  here i have created a ajax call and send the request to the servlet Servlethello



public class Servlethello extends HttpServlet {
    @Override
public void doGet(HttpServletRequest req,
                     HttpServletResponse res)throws ServletException, IOException {
res.setContentType("text/html");
  PrintWriter out = res.getWriter();
out.println("<h1>");
String a=req.getParameter(an);
out.println("solorules"+a);
out.println("</h1>");
out.close();


}


    }

变量 a 获取在文本框中输入的值并将其发送到 servlet xmlreq.open("GET","Servlethello?an=+a",true);到这个 servlet

public void doGet(HttpServletRequest req,
                     HttpServletResponse res)throws ServletException, IOException {
res.setContentType("text/html");
  PrintWriter out = res.getWriter();
out.println("<h1>");
String a=req.getParameter(an);
out.println("solorules"+a);
out.println("</h1>");

并且这个 servlet 应该显示在这里 你好,使用这个java脚本

var res=xmlreq.responseText;
    document.write(res);
    alert(res);
    document.getElementById("change").innerHTML=res;

【问题讨论】:

  • 有人只是投票结束这个问题,而不是添加评论。你应该做的是问你 - 你能解释“不工作”到底发生了什么,应该发生什么?你看到任何错误吗?应该在您的问题中添加这种性质的东西,而不仅仅是在这里粘贴您的代码并写下“这不起作用,为我修复”

标签: javascript ajax servlets


【解决方案1】:

你可以使用 jquery ajax ,它非常简单而不是纯 JS ajax。

请看下面的链接 http://api.jquery.com/jquery.ajax/

示例代码:

$.ajax({
  url: "test.html",
  dataType:"html"
  context: document.body
}).done(function(res) {
 alert(res);
});

纯 JS :

var xmlhttp;
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
      xmlhttp=new XMLHttpRequest();
  }
  else
  {// code for IE6, IE5
     xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
  xmlhttp.onreadystatechange=function()
    {
      if (xmlhttp.readyState==4 && xmlhttp.status==200)
      {
        alert(xmlhttp.responseText);
      }
   }
xmlhttp.open("GET","ajax_info.txt",true);
xmlhttp.send();

更多详情请参考以下链接: http://www.w3schools.com/ajax/ajax_xmlhttprequest_send.asp

【讨论】:

  • 没有jquery也可以吗
  • 你从文本文件中得到请求,如果我想从 servlet 得到响应,我得到 status=0,readystate=1
【解决方案2】:

您好,请使用以下示例 jquery 脚本进行 ajax 调用

 function makeAjaxCall(){
    $.ajax({
        var data = ""; // if you want to pass data as request param then assign here
        url: // your servelt path here......,
        type: 'GET',
        cache: false,
        data: data,
        success: function (data) {
            alert(data);
        },
        error: function (data, status, er) {
            alert(er);
        }
    });
 }

【讨论】:

    猜你喜欢
    • 2012-02-06
    • 2018-02-11
    • 2017-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-07
    • 1970-01-01
    相关资源
    最近更新 更多