Как мы можем назвать AJAX в Firefox

-3

Я делаю вызов AJAX с помощью XMLHttpRequest.

Он отлично работает в IE7, но когда я пытаюсь сделать то же самое в Firefox, я не могу получить его обратно через response.write

Я использую функцию ниже:

<script type="text/javascript">

        function ddSelect_Change() {
          var xmlhttp;
            if (window.XMLHttpRequest) { // Mozilla, Safari, ...       
                xmlhttp = new XMLHttpRequest();
            }
            else if (window.ActiveXObject) { // IE       
                try {
                    xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
                }

                catch (e) 
                {
                    try 
                    {
                        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
                    }
                    catch (e) 
                    {
                    }
                }
            }   

 xmlhttp.onreadystatechange = function () {
                //alert(xmlhttp.responseText);
                if (xmlhttp.readyState === 4 && xmlhttp.status === 200) {
}
}
 var url = "http://" + location.hostname + "Locationurl?Method=methodname";
xmlhttp.open("POST", url);
               xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
            xmlhttp.send(); 
}

ADDED

У меня есть два отдельных веб-приложения, одно из которых - это веб-приложение tridion, а другое - пользовательское веб-приложение. и я делаю взаимодействие от веб-приложения tridion до пользовательского веб-приложения. Оба url имеют разные domain.and состояние, я получаю 0 в firefox, и для readystate я не получаю (3) в своем уведомлении.

  • 0
    Как выглядит остальная часть вашего AJAX-кода?
  • 0
    @ChristoferEliasson Я использую коды отдыха, как указано выше.
Показать ещё 2 комментария
Теги:

2 ответа

3

Код, который вы показали до сих пор, должен работать в Firefox. Firefox поддерживает XHR.

Это может помочь: https://developer.mozilla.org/en-US/docs/AJAX/Getting_Started

Обновить:

onreadystatechange запускается несколько раз во время вызова AJAX, поэтому вы, вероятно, захотите расширить свой ответ на что-то вроде этого:

xmlhttp.onreadystatechange = function () {
    if (xmlhttp.readyState === 4) {
      if (xmlhttp.status === 200) {
        alert(xmlhttp.responseText);
      } else {
        alert('There was a problem with the request.');
      }
    }
  }

xmlhttp.readyState === 4 проверяет, что запрос завершен, чтобы вы не пытались предупредить ответ, прежде чем он его действительно получит. xmlhttp.status === 200 проверяет, что вы получили 200 OK с сервера, чтобы убедиться, что не было ошибок на стороне сервера, или что URL-адрес был неправильным.

  • 0
    Спасибо, я использовал тот же код, который вы предложили, но все же я не получаю его функционирование в Firefox
  • 0
    @SDLBeginner Вы получаете какие-либо ошибки в Firefox? Как происходит вызов AJAX? Может ли быть так, что код, инициирующий вызов, не работает в Firefox? Что произойдет, если вы просто сделаете: xmlhttp.onreadystatechange = function () { alert(xmlhttp.readyState); } ли у вас какие-либо предупреждения?
Показать ещё 11 комментариев
1

Вы рассматривали использование библиотеки jQuery? Он уже позаботился об этих проблемах для вас.

Если вы работаете над расширением GUI SDL Tridion, проверьте проект PowerTools на массу примеров. (Http://code.google.com/p/tridion-2011-power-tools/)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню