我有一个简单的jsp页面,它向servlet发送ajax请求并等待响应。不幸的是,经过多次尝试后,它没有收到回复。正在传输ajax请求,但未收到响应。
截至目前,我的页面和文本框都有一个下拉列表。我试图在下拉列表的“onchange”事件的文本框中打印下拉列表中选择的值。 这是我的代码。对此有任何帮助都是非常受欢迎的。
JSP PAGE
<script>
function ajaxrequest(){ return new XMLHttpRequest();}
function ac()
{
var myajaxrequest = new ajaxrequest();
if(myajaxrequest==null){alert("AJAX NOT WORKING");}
else
{
alert("AJAX WORKING");
var ind2=document.getElementById("dd1").value;
myajaxrequest.onreadystatechange=connection;
myajaxrequest.open("GET", "../ajaxservlet?dd1="+ind2,true );
myajaxrequest.send(null);
}
}
function connection()
{
if(myajaxrequest.readyState==4)
{
var x=myajaxrequest.responseText;
document.getElementById("result").innerHTML = x;
}
}
</script>
<body>
<form id = "form1" name ="form1" >
<select id="dd1" name="dd1" onchange= "ac()">
<option>Please select </option>
<option>ankur</option>
<option>akshay</option>
</select>
<input type="text" id="result" name="result" />
</form>
</body>
SERVLET:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("hitting servlet");
String abc = request.getParameter("dd1");
System.out.println(abc);
PrintWriter pw=response.getWriter();
response.setContentType("text/html");
pw.println(abc);
}
下拉列表中选择的值将在控制台中打印,但不会传回。 谢谢你的时间。
答案 0 :(得分:1)
myajaxrequest
是ac()
函数的本地版本,因为您使用了var
关键字。您无法在connection()
功能中访问它。
尝试在connection()
内声明ac()
功能。
使用XHR级别2,您只需将处理程序附加到readyState
事件,而不是检查onload
的状态。
顺便说一句,如果不支持原生XHR
ajaxrequest()
会抛出错误;它不会返回null。
答案 1 :(得分:0)
尝试全局初始化myajaxrequest
。