Java 对文本框的更改不会反映在网页上
当我按下按钮Java 对文本框的更改不会反映在网页上,java,javascript,textbox,Java,Javascript,Textbox,当我按下按钮getDetails时,我需要填写我的网页字段。 我提供注册id作为输入,在此基础上向数据库发出请求。我收到的响应需要显示在各个字段中 我得到了所需的响应,并正确地处理了响应(使用google chrome选项inspect元素验证)。我还尝试使用Inspect元素调试jsp代码,发现所有response的值都设置正确,但当控件传递所引发请求的回调方法时,我的网页会刷新,URL会更改为 http://localhost:8080/ReportFetcher/FirstJSP.jsp?
getDetails
时,我需要填写我的网页字段。
我提供注册id
作为输入,在此基础上向数据库发出请求。我收到的响应需要显示在各个字段中
我得到了所需的响应,并正确地处理了响应(使用google chrome选项inspect元素验证)。我还尝试使用Inspect元素调试jsp代码,发现所有response的值都设置正确,但当控件传递所引发请求的回调方法时,我的网页会刷新,URL会更改为
http://localhost:8080/ReportFetcher/FirstJSP.jsp?regid=2®Idsubmitbutton=getDetails&Class=0
而我希望它是http://localhost:8080/ReportFetcher/FirstJSP.jsp?
因为此页面也有动态下拉列表,在其中选择一个下拉列表后,将引发请求,处理响应,并填充其他下拉列表
这个场景运行良好,所以我无法理解为什么在第一种情况下页面url会发生变化。
还需要注意的是,在第一种情况下,当将页面置于调试状态时,我可以看到在网页的各个元素中设置的值,这意味着(在我看来)先设置值,然后刷新页面,这会导致删除以前设置的数据
以下是jsp文件中的一段代码:
function funcOnChange(reqElement) {
var valueSelected = null;
if (reqElement.name == "Class") {
valueSelected = reqElement.value;
document.detail.regid.disabled = true;
} else if (reqElement.name == "regIdsubmitbutton") {
valueSelected = "R" + document.detail.regid.value;
}
document.detail.Section.options.length = 0;
if (reqElement.name == "Class" && valueSelected == "None") {
document.detail.Section.disabled = true;
return;
}
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
// Check to see if this state change was "request complete", and
// there was no server error (404 Not Found, 500 Server Error, etc)
if (xhr.readyState == 4 && xhr.status == 200) {
var substring = xhr.responseText;
if (reqElement.name == "regIdsubmitbutton") {
parseResponse(substring);
} else {
document.detail.Section.disabled = false;
// loop to update the drop down
var pos = doActivateSection(substring);
generateTable(substring, pos);
}
}
if (xhr.readyState == 404) {
alert("404 error");
}
if (xhr.readyState == 500) {
alert("500 error");
}
}
function parseResponse(response) {
var name = 0, standard = 1, section = 2, rollno = 3, subject = 4, total_type = 5;
var pos;
var result = [];
var data = [];
var type = 0;
while (type < total_type) {
switch (type) {
case name:
result = readSegment(response, -1);
break;
case standard:
result = readSegment(response, pos);
break;
case section:
result = readSegment(response, pos);
break;
case rollno:
result = readSegment(response, pos);
break;
case subject:
result = readSegment(response, pos);
break;
default:
break;
}
data = result[0];
pos = result[1];
type++;
updateFormElement((type - 1), data);
}
}
function updateFormElement(type, data) {
var element;
switch (type) {
case 0:
element = document.getElementById("studentName");
element.value = data[0];
element.disabled = true;
break;
case 1:
document.detail.Class.options[0] = new Option(data[0], data[0], 0,
0);
document.detail.Class.disabled = true;
break;
case 2:
document.detail.Section.options[0] = new Option(data[0], data[0],
0, 0);
document.detail.Section.disabled = true;
break;
case 3:
element = document.getElementById("RollNo");
element.value = data[0];
element.disabled = true;
break;
case 4:
break;
default:
break;
}
}
function readSegment(res, pos) {
var value = [];
var result = [];
var valueindex = 0;
for ( var index = pos + 1; index < res.length; index++) {
pos = index;
if (res[index] == '|') {
break;
} else if (res[index] == ',') {
valueindex++;
} else {
if (value[valueindex] == null
|| value[valueindex] == 'undefined') {
value[valueindex] = "";
}
value[valueindex] = value[valueindex] + res[index];
}
}
result.push(value);
result.push(pos);
return result;
}
<form name="detail" method="post">
<p align="center">Either Enter :</p>
<span id="01120"><b>Registration id:</b></span> <input type="text"
name="regid"> <span id="01119"></span> <input type="submit"
value="getDetails" onclick="funcOnChange(this)"
name="regIdsubmitbutton"> <br>
函数功能更改(reqElement){
var valueSelected=null;
if(reqElement.name==“类”){
valueSelected=reqElement.value;
document.detail.regid.disabled=true;
}else if(reqElement.name==“regIdsubmitbutton”){
valueSelected=“R”+document.detail.regid.value;
}
document.detail.Section.options.length=0;
如果(reqElement.name==“类”&&valueSelected==“无”){
document.detail.Section.disabled=true;
返回;
}
var xhr=new XMLHttpRequest();
xhr.onreadystatechange=函数(){
//检查此状态更改是否为“请求完成”,以及
//没有服务器错误(404未找到、500服务器错误等)
如果(xhr.readyState==4&&xhr.status==200){
var substring=xhr.responseText;
if(reqElement.name==“regIdsubmitbutton”){
解析响应(子串);
}否则{
document.detail.Section.disabled=false;
//循环以更新下拉列表
var pos=doActivateSection(子字符串);
generateTable(子字符串,pos);
}
}
if(xhr.readyState==404){
警报(“404错误”);
}
如果(xhr.readyState==500){
警报(“500错误”);
}
}
函数parseResponse(响应){
变量名称=0,标准=1,节=2,卷号=3,主题=4,总类型=5;
var-pos;
var结果=[];
var数据=[];
var类型=0;
while(类型<总类型){
开关(类型){
案例名称:
结果=读取段(响应,-1);
打破
案例标准:
结果=读取段(响应,位置);
打破
案例部分:
结果=读取段(响应,位置);
打破
案件编号:
结果=读取段(响应,位置);
打破
个案主题:
结果=读取段(响应,位置);
打破
违约:
打破
}
数据=结果[0];
pos=结果[1];
类型++;
updateFormElement((类型-1),数据);
}
}
函数updateFormElement(类型、数据){
var元素;
开关(类型){
案例0:
element=document.getElementById(“studentName”);
element.value=数据[0];
element.disabled=true;
打破
案例1:
document.detail.Class.options[0]=新选项(数据[0],数据[0],0,
0);
document.detail.Class.disabled=true;
打破
案例2:
document.detail.Section.options[0]=新选项(数据[0],数据[0],
0, 0);
document.detail.Section.disabled=true;
打破
案例3:
元素=document.getElementById(“RollNo”);
element.value=数据[0];
element.disabled=true;
打破
案例4:
打破
违约:
打破
}
}
功能读取段(res、pos){
var值=[];
var结果=[];
var valueindex=0;
对于(var指数=位置+1;指数输入:
注册id:
在getDetail按钮的下拉菜单onChange
和onClick
上调用funcOnchange()
。
在parseResponse()
响应中,解析文本,并在各种文本框中设置文本。
调试parseResponse()
时正确完成,但在该页面刷新之后。提交按钮会在内部刷新页面,因此您需要更改按钮的类型,希望这样可以解决问题
<input type="button"
value="getDetails" onclick="funcOnChange(this)"
name="regIdsubmitbutton">
好的,您必须向我们展示完整的函数funcOnchange和parseResponse。但是,在此之前,请确保不要使用submit类型的按钮,除非您取消其默认行为。@amadeus我已经查看了按钮类型和