2012-07-14 96 views
0

我一直试图在调用函数后获取xmlhttp.responseText,因为我希望做一些显示和隐藏对象。但似乎我不能匹配innerhtml并显示像按钮这样的对象。从xmlhttp.responseText获取数据

更新JavaScript函数:

function ShowHideDisplay(str) 
{ 
    xmlhttp = new XMLHttpRequest(); 
    //It will echo whatever message into this response.text. 
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) 
    { 
    document.getElementById("validate").innerHTML = xmlhttp.responseText; 
    } 
    //Using test 
    var successText = "<img src=\"./images/success.gif\" alt=\"Correct!\">Can be used"; 
    document.getElementById("validate").innerHTML = responseText; 
    if(document.getElementById("validate").innerHTML.test(/success/gmi)) 
    { 
     document.getElementById("submit").style.visibility = 'visible'; 
    } 
    else 
    { 
     document.getElementById("submit").style.visibility = 'hidden'; 
    } 
} 

HTML表单:

<input name="Numbers" type="text" id="Numbers" onkeyup="ShowHideDisplay(this);" value=""/> 
<span id="validate"></span> 
//wants to hide and show upon onkeyup and getting the span id of validate.innerhtml success message 
<input name="submit" id="submit" type="submit"> 

我只需要得到验证值或文本的innerHTML的跨度ID显示和隐藏的按钮。但我尝试不同的方式,但它不能匹配innerhtml文本。 请提醒。

+0

您的代码是否考虑到它需要运行依赖ajax调用的回调函数发送给ajax请求的部分,除非它正在同步进行呼叫? – txominpelu 2012-07-14 23:09:20

+0

nv之前使用ajax。但是有可能获得span id值吗?这样我可以说如果成功了,按钮会显示 – JLearner 2012-07-14 23:16:32

回答

1

我创建了一个Fiddle这可能是你想要的。

的HTML

<input id="submit" type="submit" /> 
<span id="validate"></span>​ 

的JavaScript

/* Success */ 
var responseText = "<img src=\"./images/success.gif\" alt=\"Correct!\">Can be used"; 

/* Failure */ 
//var responseText = "<img src=\"./images/Failed.gif\" alt=\"Incorrect!\">Can not be used"; 

/* Assign content */  
document.getElementById("validate").innerHTML = responseText || ""; 

/* Change visibility based on outcome (success or not) */  
if(document.getElementById("validate").innerHTML.test(/success/gmi)) { 
    document.getElementById("submit").style.visibility = 'visible'; 
} else { 

    document.getElementById("submit").style.visibility = 'hidden'; 
}​ 

Test with a regular expression如果单词'成功'是结果还是不行。通过这种方式,响应中的HTML无关紧要。

注意没有<成功\ >元素在HTML中,使用跨度或DIV带班的成功。

PS。如果你可以的话,你应该只返回true或者false或者成功或失败这个词而不是HTML,并且在客户端上渲染文本和图像。

+0

作出实际要求?如在?哦,如果你指的是调出另一页。是的,我成功了。我可以得到response.text。现在我想知道如何获取response.text中的跨度id – JLearner 2012-07-14 23:13:30

+0

无法获取内部html .. – JLearner 2012-07-15 00:27:36

+0

已经更改为getElementById。但仍然无法做到===。是因为我的回复信息包含了这个吗? “”\"Correct!\"可以使用“,PHP_EOL; – JLearner 2012-07-15 00:43:02