Ajax响应文本正确但不显示
我试着用谷歌找到这个问题,但到目前为止运气不好,所以我请求一些帮助。 我在JSP上处理一个网页,我在ajax responseText上有点问题,我在firefox上测试这个网页,并使用firebug。 问题在于操作已正确完成,firebug控制台上的响应文本显示为ok,但它没有显示在我分配的Ajax响应文本正确但不显示,ajax,jsp,responsetext,Ajax,Jsp,Responsetext,我试着用谷歌找到这个问题,但到目前为止运气不好,所以我请求一些帮助。 我在JSP上处理一个网页,我在ajax responseText上有点问题,我在firefox上测试这个网页,并使用firebug。 问题在于操作已正确完成,firebug控制台上的响应文本显示为ok,但它没有显示在我分配的上。 当我在处理onreadystatechange的函数中放入一个alert()时,它会正确显示,好像响应太晚了,所以我有点不知所措。 谁能给我一个主意吗 我处理提交的JS是 function valid
上。
当我在处理onreadystatechange的函数中放入一个alert()时,它会正确显示,好像响应太晚了,所以我有点不知所措。
谁能给我一个主意吗
我处理提交的JS是
function validate( form ) {
var expresion = /[\b\W\d]+/;
var error=0;
var nombre = document.getElementById("Addname");
var descripcion = document.getElementById("Adddescripcion");
if(nombre.value == "" ){
nombre.focus();
nombre.style.backgroundColor="red";
alert("Los Campos no deben estar vacios");
error = error+1;
}else{
if(!(expresion.test(nombre.value))){
var temp = nombre.value.toUpperCase();
nombre.value = temp;
}else{
nombre.focus();
nombre.style.backgroundColor="red";
alert("La entrada no es valida");
error = error+1;
}
}
if( descripcion.value == "" ){
descripcion.focus();
descripcion.style.backgroundColor="red";
alert("Los Campos no deben estar vacios");
error = error+1;
}
if(error == 0){
var url = "addCarrera";
var params = "name="+ nombre.value +"&descripcion="+descripcion.value;
ajaxPost(url,params,"addres");
document.getElementById("addres").setAttribute("class","visible");
clearing();
}
}
function clearing(){
var nombre = document.getElementById("Addname");
var descripcion = document.getElementById("Adddescripcion");
nombre.value="";
descripcion.value="";
nombre.style.backgroundColor="white";
descripcion.style.backgroundColor="white";
var timer = setTimeout("ocultar()", 1500);
}
处理Ajax请求的my代码
var ajaxCall;
function ajax_request() {
if(window.XMLHttpRequest){
//codigo para IE7+,Firefox,Chrome, Opera,Safari
ajaxCall=new XMLHttpRequest();
}else{
//codigo para IE6 y 5
ajaxCall=new ActiveXObject("Microsoft.XMLHTTP");
}
}
function ajaxPost(url ,params, respuesta){
ajax_request();
ajaxCall.onreadystatechange = statechangeHandle(respuesta);
ajaxCall.open("POST",url,true);
ajaxCall.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
ajaxCall.setRequestHeader("Content-length", params.length);
ajaxCall.setRequestHeader("Connection", "close");
ajaxCall.send(params);
//alert("respuesta? "+respuesta);
}
function statechangeHandle(text){
//alert("text?"+text);
//alert("ready?"+ajaxCall.readyState);
if(ajaxCall.readyState == 4 && ajaxCall.status === 200){
//alert("prueba");
document.getElementById(text).innerHTML=ajaxCall.responseText;
//alert(ajaxCall.responseText);
}
}
html部分
<h3>Agregar Carrera</h3>
<table>
<tr>
<td>Nombre:</td>
<td><input type="text" id="Addname" size="20" /></td>
</tr>
<tr>
<td>Descripcion:</td>
<td><textarea rows="2" cols="20" id="Adddescripcion" > </textarea></td>
</tr>
<tr>
<td><input type="button" value="Agregar" onclick="validate()"></td>
</tr>
</table>
<div class="ocultar" id="addres"></div>
Agregar Carrera
名义:
描述:
提前谢谢
顺便说一句,ajaxPost上的ajax没有显示任何东西,但例如在statechangeHandle上,如果在asign之前激活te警报,则响应文本html已正确修改,但如果没有,则div保持不变,我不太确定这意味着什么,好像它必须等待,我不知道我是不是真的做错了什么你在ajaxPost中的警报无法工作,因为你是异步发出此请求的。正如您所提到的,它仅在statechangeHandle函数中有效。您是说您在statechangeHandle函数中获得了具有正确值的警报,但在“addres”div中没有看到innerHTML更改吗?如果是,请同时显示您的HTML。