AJAXについて質問があります

WBOY
WBOYオリジナル
2016-06-13 13:30:251012ブラウズ

AJAX について質問する

JScript コード
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->
     function nums(){
        var n = document.natform.num.value;
            
        var url="index.php?c=nat&a=natid&id="+n+"";
        if(n == ''){
            document.getElementById('num').style.display='block';
            document.getElementById('num').innerHTML='编号不能为空';
            document.getElementById('num').style.color='red';
            return false;
        }else{
            xmlHttpRequest = createXmlHttpRequest();
            xmlHttpRequest.onreadystatechange = handle;
            xmlHttpRequest.open("GET",url,true);
            xmlHttpRequest.send(null);
                        //我的问题就是 在这个else里怎么接收到 handle()的返回值(true  false)
        }
    
    }
    function handle(){
        if(xmlHttpRequest.readyState == 4){    
            var re = xmlHttpRequest.responseText;
            if(re){
                document.getElementById('num').style.display='block';
                document.getElementById('num').innerHTML='编号已存在';
                document.getElementById('num').style.color='red';
                return false;
            }else{
                document.getElementById('num').style.display='block';
                document.getElementById('num').innerHTML='可以使用';
                document.getElementById('num').style.color='green';
                return true;
            }
            
        }    
    }



上記は ID が存在するかどうかを判断するための ajax であり、存在しない場合は送信できます。存在する場合は、既に存在するため送信できないことを示すプロンプトが表示されます
JScript コード
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->
    function saves(){
        if(nums()){
            document.natform.action="index.php?c=nat&a=addnatpost";
                    document.natform.submit();
        }
    }


しかし、問題は num() が handle() の戻り値を受け取れないことです。存在する場合、num() のステータスは未定義です。ブロックを変更する方法を教えてください

-----解決策---------- --------
JScript コード

 var re = xmlHttpRequest.responseText; //ここでの re 値は何ですか?警戒して見てください。
//値がない場合は、バックエンドの受信と処理に問題があることを意味します。
<br><font color="#e78608">------解決策------------------</font><br>
Ajax は非同期通信メソッドであるため、num() から正しい戻り値を取得することはできません<br>必要な送信アクションはハンドル <div class="clear"> で完了する必要があります</div>
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。