-3

アクション/ホーム/スタートにリクエストを送信する必要があります

要素ID'js_script'に設定された応答。

私はそれを行う方法を見つけることができません。

4

2 に答える 2

0

基本的なリクエストだけが必要な場合は、ここにある関数を使用してライブラリなしで簡単に行うことができますhttp://www.quirksmode.org/js/xmlhttp.html

function sendRequest(url,callback,postData) {
    var req = createXMLHTTPObject();
    if (!req) return;
    var method = (postData) ? "POST" : "GET";
    req.open(method,url,true);
    req.setRequestHeader('User-Agent','XMLHTTP/1.0');
    if (postData)
        req.setRequestHeader('Content-type','application/x-www-form-urlencoded');
    req.onreadystatechange = function () {
        if (req.readyState != 4) return;
        if (req.status != 200 && req.status != 304) {
//          alert('HTTP error ' + req.status);
            return;
        }
        callback(req);
    }
    if (req.readyState == 4) return;
    req.send(postData);
}

var XMLHttpFactories = [
    function () {return new XMLHttpRequest()},
    function () {return new ActiveXObject("Msxml2.XMLHTTP")},
    function () {return new ActiveXObject("Msxml3.XMLHTTP")},
    function () {return new ActiveXObject("Microsoft.XMLHTTP")}
];

function createXMLHTTPObject() {
    var xmlhttp = false;
    for (var i=0;i<XMLHttpFactories.length;i++) {
        try {
            xmlhttp = XMLHttpFactories[i]();
        }
        catch (e) {
            continue;
        }
        break;
    }
    return xmlhttp;
}
于 2012-04-27T16:55:32.553 に答える
0

私はあなたが何を意味するのかを推測する必要がありますが、基本的には、XMLHttpRequestオブジェクトを使用してajaxリクエストを実行します。これは、他のブラウザが採用し、現在標準化の過程にあるMicrosoftの革新です。最近のブラウザでは次のようになります。

function sendRequest() {
    var request = new XMLHttpRequest();
    request.open('GET', '/Home/Start', false);
    request.onreadystatechange = handleStateChange;
    request.send(null);

    function handleStateChange() {
        if (request.readyState === 4) {
            // The request is complete; did it work?
            if (this.status >= 200 && this.status < 300) {
                // Yes, you can use the data on request.responseText
                // or (for requests with XML replies) request.responseXML

                // In our case, let's say we want to put all of the text
                // into the element with the `id` "js_script":
                var elm = document.getElementById("js_script");
                elm.innerHTML = request.responseText;
            }
        }
    }
}

それは明らかに非常に単純化されています。古いブラウザでは、オブジェクトの作成に関していくつかのチェックを行う必要があります(new XMLHttpRequestたとえば、IE7では機能しませんが、IE7でそれを行う方法があります)。


古いブラウザでオブジェクトを作成する際の複雑さは、 jQueryPrototypeYUIClosure、またはその他のいくつかの適切なJavaScriptライブラリのいずれかを使用することをお勧めする多くの理由の1つです。ブラウザの違いをスムーズにし、多くのユーティリティ機能を追加し、(たとえば)HTTPステータスコードを気にすることなく、特定のタスクを実行することに集中できます。だからといって、図書館なしで物事を行う時間と場所がないというわけではありません。もちろんありますが、通常は、完全に自分で行うよりも、他の人の仕事に基づいて生産性を高めることができます。

于 2012-04-27T16:57:59.713 に答える