jri*_*ggs 0 javascript xmlhttprequest
php脚本返回一个值,第一个警报正常工作.
我无法在第二个警报中引用httprequest返回的值.理想情况下,我会调用函数get_captcha() - 它会返回值 - 它只是我不知道如何做到这一点.
我意识到在全球范围内设置变量可能不是最好的方法,但这是我唯一能想到的 - 我对替代方案持开放态度.
<script type="text/javascript">
var url = "captcha_get_code.php"; // The server-side script
var cap;
function ValidateForm() {
get_captcha()
alert(cap); //undefined
}
function get_captcha() {
http.open("GET", url, true);
http.onreadystatechange = handleHttpResponse;
http.send(null);
}
function handleHttpResponse() {
if (http.readyState == 4) {
if (http.status==200) {
//return http.responseText;
cap=http.responseText;
alert(cap); //this one works
}
}
}
function getHTTPObject() {
var xmlhttp;
if(window.XMLHttpRequest){
xmlhttp = new XMLHttpRequest();
}
else if (window.ActiveXObject){
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
if (!xmlhttp){
xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
}
}
return xmlhttp;
}
var http = getHTTPObject(); // We create the HTTP Object
</script>
Run Code Online (Sandbox Code Playgroud)
您无法从成功的XMLHttpRequest调用中"返回"值.您可以执行任何你需要的分类处理内部的回调函数.
XMLHttpRequests是异步执行的.你不能让你的代码"等待"它们(除非你让它们同步)(你真的,真的不应该这样做).但是,没有必要,因为运行时系统会在请求完成时调用"readystatechange"处理程序.从该代码中,您可以随心所欲地做任何事情.
这个事实要求你对如何编写代码有一点看法,但实际上并没有那么多的调整.如果,例如,你会倾向于写一个"processResults()"功能,那么你仍然可以做到这一点-你只需调用,从里面的"readystatechange"处理程序.
| 归档时间: |
|
| 查看次数: |
7235 次 |
| 最近记录: |