XHR получить URL-адрес запроса в onreadystatechange - PullRequest
3 голосов
/ 13 января 2011

Есть ли способ получить URL запроса в методе "onreadystatechange"?

Я хочу выполнить несколько запросов XHR и узнать, какой из них возвращается:

xhr.open("GET", "https://" + url[i], true);
xhr.onreadystatechange = function(url) {
    console.log("Recieved data from " + url);
};
xhr.send();

Ответы [ 2 ]

5 голосов
/ 13 января 2011

Есть 3 простых способа сделать это.

1: использовать замыкания, как уже описано

2: установить атрибут объекта xhr, на который вы можете ссылаться позже, следующим образом:

xhr._url = url[i];
xhr.onreadystatechange = function(readystateEvent) {
    //'this' is the xhr object
    console.log("Recieved data from " + this._url);
};
xhr.open("GET", "https://" + url[i], true);

3: Карри нужных данных в ваши обратные вызовы (мое предпочтительное решение)

Function.prototype.curry = function curry() {
    var fn = this, args = Array.prototype.slice.call(arguments);
    return function curryed() {
        return fn.apply(this, args.concat(Array.prototype.slice.call(arguments)));
    };
};

function onReadystateChange(url, readystateEvent) {
  console.log("Recieved data from " + url);
};

xhr.onreadystatechange = onReadystateChange.curry(url[i]);
xhr.open("GET", "https://" + url[i], true);
4 голосов
/ 13 января 2011

Использование закрытие .

function doRequest(url) {
    // create the request here

    var requestUrl = "https://" + url;
    xhr.open("GET", requestUrl, true);
    xhr.onreadystatechange = function() {

        // the callback still has access to requestUrl
        console.log("Recieved data from " + requestUrl); 
    };
    xhr.send();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...