元のjsはajax非同期要求を実現する

2712 ワード

function createXMLHttpRequest() {
            var xmlHttp;
            try {
                xmlHttp = new XMLHttpRequest();
            } catch (e) {
                //   IE6
                try {
                    xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
                } catch (e) {
                    //   IE5      
                    try {
                        xmlHttp = ActiveXObject("Microsoft.XMLHTTP");
                    } catch (e) {

                    }
                }
            }
            return xmlHttp;
        }

xmlHttpの互換性のある書き方を返します
var xmlhttp = createXMLHttpRequest();
        xmlhttp.onreadystatechange = function () {      //  ajax    
            if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
                var data = xmlhttp.responseText;

                alert(data);
            }
        }
        xmlhttp.open("POST", "/ajax_recelve/", true);//GET|POST url     
        //POST  :  django form    ,   403,     warn
        xmlhttp.setRequestHeader("ContentType", "application/x-www-form-urlencoded")//   open  ,send  
        // xmlhttp.send(null);
        xmlhttp.send("name=daxue");

ルーティングurl
 url(r'ajax_recelve/',views.ajax_recelve),

関数の実装
def ajax_recelve(request):
    if request.method == "POST":
        print("12345",request.POST)
    return HttpResponse("  ajax   hello2  ")

1.open(method,url,async)メソッドには、3つのパラメータが必要です.
method:要求を送信するために使用される方法(GETまたはPOST);POSTに比べてGETは簡単で速く、ほとんどの場合使用できます.ただし、以下の場合、POSTリクエストを使用してください.
  • キャッシュファイル(サーバ上のファイルまたはデータベースを更新)
  • を使用できません.
  • サーバに大量のデータを送信(POSTはデータ量制限なし)
  • .
  • が未知文字を含むユーザ入力を送信場合、POSTはGETよりも安定で信頼性が高い
  • である.
    url:サーバ側スクリプトのURLを規定します(このファイルは、.txtおよび.xmlなどの任意のタイプのファイル、または.aspおよび.phpなどのサーバスクリプトファイル(応答を返す前にサーバ上でタスクを実行できます);
    async:要求に対して非同期(true)または同期(false)処理を行うべきであることを規定する.trueは、サーバの応答を待つ間に他のスクリプトを実行し、応答が完了した後に応答を処理する.falseは、サーバ応答の再実行を待つ.
    2.send()メソッドは、要求をサーバに送信することができる.
    3.onreadystatechange:サーバ応答を処理する関数が保存され、readystatechange関数はreadystatechangeが変更されるたびに実行されます.
    4.readyState:サーバ応答のステータス情報が格納されています.
  • 0:要求未初期化(エージェントは作成されたがopen()メソッドは呼び出されていない)
  • 1:サーバ接続が確立する(openメソッドが呼び出された)
  • .
  • 2:要求受信(sendメソッドが呼び出され、ヘッダおよびステータスが取得可能)
  • .
  • 3:要求処理中(ダウンロード中、responseText属性は既に部分データを含む)
  • .
  • 4:要求が完了し、応答が完了した(ダウンロード操作が完了した)
  • .
    5.responseText:文字列形式の応答データを取得する.
    6.setRequestHeader():POSTでデータを転送する場合、HTTPヘッダを追加し、send(data)し、dataフォーマットに注意する.GETがメッセージを送信するときにurlに直接パラメータを付けるといいです.例えばurl?a=a1&b=b1