xmlHTTPrequest не открывается («GET», url, true); Я раздражен! PHP - PullRequest
3 голосов
/ 23 марта 2009

Я пытался заставить URL открываться, но меня раздражает, почему это не сработало. Код указан и объяснен ниже. Любая помощь будет высоко оценена.

Объект:

function getXMLHTTPRequest() {
   var req =  false;
   try {
      /* for Firefox */
      req = new XMLHttpRequest(); 
   } catch (err) {
      try {
         /* for some versions of IE */
         req = new ActiveXObject("Msxml2.XMLHTTP");
      } catch (err) {
         try {
            /* for some other versions of IE */
            req = new ActiveXObject("Microsoft.XMLHTTP");
         } catch (err) {
            req = false;
         }
     }
   }

   return req;
}

Объект называется так:

<script type="text/javascript">
var myDelete = new getXMLHTTPRequest();
</script>

Теперь вот что я хочу сделать:

function removeArticle(id) {

    if (myDelete) {

        try {
            var deletUrl = "delete.php";
            var query = deletUrl + "?theid=" + id;
            myDelete.open("GET", query, true);
            myDelete.onreadystatechange = removeArticleResponse;
            myDelete.send(null);
        } catch (e) {
            alert ("Unable to connect to the server:\n" + e.toString());
        }
    } else {
        alert ("Bad! Very BAD!");
    }
}

Когда я делаю это:

        if (myDelete.open("GET", query, true)) {
        myDelete.onreadystatechange = removeArticleResponse;
        myDelete.send(null);
        } else {
            alert ("No road!");
        }

оповещение («Нет дороги!»); показывает, что код не выполняется, прошел этот пункт:

if (myDelete.open("GET", query, true)) {

Это означает, что if (myDelete) {работает. Код проходит этот этап и по какой-то причине останавливается здесь: myDelete.open ("GET", query, true); Это не откроет URL. Я не уверен, в чем проблема.

Редактировать: Вот функция, используемая для доступа к ответу сервера:

function removeArticleResponse () {
    if (myDelete.status == 4) {
        if (myDelete.status == 200) {
                        try {
                            response = myDelete.responseText;
                            document.getElementById('displaynewsletterarticleresult').innerHTML = response;
                        } catch(e) {
                            alert("An error occured while reading the response:" + e.toString());
                        }
        } else {
        alert ("An error occured when attempting to retrieve the data:\n" + myDelete.statusText);
        }
    }
}

Ответы [ 3 ]

3 голосов
/ 23 марта 2009

Согласно this , XMLHttpRequest.open () не имеет возвращаемого значения, поэтому ваша проверка всегда будет неудачной.

2 голосов
/ 23 марта 2009

В своей функции ответа вы хотите проверить .status == 4 вместо .readyState?

0 голосов
/ 24 марта 2009

Все xmlHTTPRequests связаны с одной и той же политикой происхождения. Может быть, это ваша проблема.

Подробнее об этом можно прочитать на http://en.wikipedia.org/wiki/Same_origin_policy

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...