Использование имени переменной в XMLHttpRequest - PullRequest
3 голосов
/ 17 мая 2010

Я использую jQuery и пытаюсь загрузить переменную вместо именованного XML-файла. Мой код:

$(document).ready(function() { 
        // bind 'myForm' and provide a simple callback function 
        $('#theForm').ajaxForm(function(responseXML2) { 

            var myxml = responseXML2;
            alert(responseXML2);
            displayResult();


           }); 
}); 
function loadXMLDoc(dname)
{
if (window.XMLHttpRequest)
  {
  alert("loading xmlhttprequest");
  xhttp=new XMLHttpRequest();
  }
else
  {
  alert("loading activeX");
  xhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
alert("bottom load");
xhttp.open("GET",dname,false);
xhttp.send();
return xhttp.responseXML;
}

function displayResult()
{
alert("setting vars");

alert("displayResult called");

//xml=loadXMLDoc(responseXML2);  //tried this and the line below, among others
xml=responseXML2;
alert("xmlDocLoaded");
xsl=loadXMLDoc("xslt-test.xsl");
alert("XSLloaded");
// code for IE
if (window.ActiveXObject)
  {
  alert("IE");
  ex=xml.transformNode(xsl);
  document.getElementById("ieiresponse").innerHTML=ex;
  }
// code for Mozilla, Firefox, Opera, etc.
else if (document.implementation && document.implementation.createDocument)
  {
  alert("notIE");
  xsltProcessor=new XSLTProcessor();
  xsltProcessor.importStylesheet(xsl);
  resultDocument = xsltProcessor.transformToFragment(xml,document);
  document.getElementById("ieiresponse").appendChild(resultDocument);
  }
}

В приведенном выше коде я хочу иметь:

//xml=loadXMLDoc(responseXML2);  //tried this and the line below, among others
xml=responseXML2;

вместо именованного файла:

xsl=loadXMLDoc("example.xml");

Когда я запускаю код, он работает, если я назову файл, но когда я использую переменную (которая отображается в оповещениях, поэтому ее извлекают), он останавливает код в строке выше (помещая переменная как XML-файл)

Любая помощь будет высоко ценится! Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 17 мая 2010

Из комментариев:

Я хочу опубликовать форму на сервере, получить ответ обратно в XML, применить XSLT в XML и отобразить его в div на странице.

Из того, что я вижу, что-то подобное должно уже делать все, что вы хотите:

$(document).ready(function() {
  // prepare sending the AJAX form (use ajaxSubmit() to actually send it)
  $('#theForm').ajaxForm({
    dataType: 'xml', 
    success:  function(responseText, statusText, xhr, $form) {
      // jQuery xslt plugin required for this:
      $.xslt({
        xml: xhr.responseXML,
        xslUrl: "xslt-test.xsl",
        target: "#ieiresponse"
      });
    },
    error: function(xhr, textStatus, errorThrown) {
      alert("Oops, there was an error: " + textStatus);
    }
  });
});

Ваш код невероятно пронизан вещами, которые jQuery уже делает для вас (например, выбор правильного объекта XmlHttpRequest в зависимости от типа браузера и другие вещи). Вы можете и должны избавиться от всего этого. И вы должны начать читать некоторые учебники по jQuery, потому что, хотя вы говорите по-другому, ваш код не указывает на всех , которые у вас действительно есть.

0 голосов
/ 17 мая 2010

Хорошо, поэтому я ответил на свой вопрос: Вот результат для других

1) Я вложил свою функцию, чтобы она могла ссылаться на переменную. 2) я заменил

xml=loadXMLDoc(responseXML2);

с:

xml=responseXML2;

, который теперь работал внутри вложенной функции.

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