1

重複の可能性:
jquery なしで ajax 呼び出しを行うには?

js(Ajax)のコードはあるけどAjax(XMLHttpRequest)なしで作りたい

$.ajax({
            type:'POST',
            data:'slug='+prize,
            url:'/wybrana-nagroda/',
            success:function(msg)
            {
                $('#whaiting').hide();
                if(msg==='winner') 
                    $(window.location).attr('href','/formularz');
            }
        });

どのように見えるべきですか?

function send(post, url) {
  var client = new XMLHttpRequest();
  client.open("POST", url);
  client.send(message);
}

?

ありがとう。

4

1 に答える 1

2

すべてのブラウザーで互換性を持たせたい場合は、次のようにする必要があります。

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-12-10T18:17:40.277 に答える