1. 程式人生 > >JavaScript XMLHttpRequest GetUrlResponse 前端向後端傳值並獲得XML格式Response.

JavaScript XMLHttpRequest GetUrlResponse 前端向後端傳值並獲得XML格式Response.

同步方式一般用於需要對觸發結果執行動作。

比如點選button彈出新的頁面, 頁面中獲取到Response的值,需要對彈出頁面進行處理。

非同步方式用於不需對觸發結果執行動作。

比如觸發結果是頁面多加一些元素,或者取到或更新某些值。不需要對這些元素和值進行處理。

同步方式

//url處理資料的檔案地址(c# url通常是處理前臺資料的ashx檔案在伺服器的地址)
function GetUrlResponse(url) {
    var xhttp;
    if (window.XMLHttpRequest)//code for all new browsers.
        xhttp = new XMLHttpRequest();
    else if (window.ActiveXObject)//code for IE5 and IE6
        xhttp = new ActiveObject("Microsoft.XMLHTTP"); 
    else
        alert("Your browser does not support XMLHTTP.");
    xhttp.open("POST", url, false);//false 表示同步 
    xhttp.send();
    if (xhttp.status.toString() == "200") {
        var doc = xhttp.responseText;
        return doc.toString();
    }
    else {
        return xhttp.responseText;
    }
}

非同步方式

//url處理資料的檔案地址(c# url通常是處理前臺資料的ashx檔案在伺服器的地址)
function GetUrlResponse(url) {
    var xmlhttp;
    if (window.XMLHttpRequest)//code for all new browsers.
        xmlhttp = new XMLHttpRequest();
    else if (window.ActiveXObject)//code for IE5 and IE6
        xmlhttp = new ActiveObject("Microsoft.XMLHTTP");

    if (xmlhttp != null) {
        xmlhttp.onreadystatechange = state_Change(xmlhttp);//onreadystatechange控制代碼在下一句確定非同步後觸發
        xmlhttp.open("POST", url, true);//非同步
        xhttp.send();//傳遞引數
    }
    else 
        alert("Your browser does not support XMLHTTP."); 
}

function state_Change(xmlhttp) {
    debugger;
    if (xmlhttp.readyState == 4) {
        //4="loaded"
        if (xmlhttp.status == 200) {
            // 200 = OK 
            //the code you want to process.
        }
        else {
            alert("Problem retrieving XML data.");
        }
    }
}