Я изучаю, как использовать javascript для вызова веб-метода из службы ASMX с использованием класса XMLHttpRequest. Я успел написать следующее:javascript, как получить значение из XML
function GetDataService() {
if (window.XMLHttpRequest) {
xmlHTTP = new window.XMLHttpRequest;
} else {
alert("Wrong!");
}
xmlHTTP.open("POST", "http://localhost:45250/ServiceJava.asmx", true);
xmlHTTP.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
xmlHTTP.setRequestHeader("SOAPAction", "http://localhost:45250/ServiceJava.asmx/GetTimeString");
strRequest = '<?xml version="1.0" encoding="utf-8"?>';
strRequest = strRequest + '<soap:Envelope '
+ 'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" '
+ 'xmlns:xsd="http://www.w3.org/2001/XMLSchema" '
+ 'xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">';
strRequest = strRequest + '<soap:Body>';
strRequest = strRequest + '<GetTimeString xmlns="http://localhost:45250/ServiceJava.asmx" />';
strRequest = strRequest + '</soap:Body>';
strRequest = strRequest + '</soap:Envelope>';
//Different value for readystate
//0--Uninitialized
//1--Loading
//2--loaded(but data not recieved)
//3--Interactive--Some part of the data is recieved
//4--Completed(all data recieved)
xmlHTTP.onreadystatechange = function() {
if (xmlHTTP.readyState == 4 && xmlHTTP.status == 200) {
var x = xmlHTTP.responseXML;
document.getElementById("time").textContent = x;
}
}
xmlHTTP.send(strRequest);
}
Но он производит код:
<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><GetTimeStringResponse xmlns="http://localhost:45250/ServiceJava.asmx"><GetTimeStringResult>14:31:28</GetTimeStringResult></GetTimeStringResponse></soap:Body></soap:Envelope>
Теперь я хотел бы получить только 14:31:28
. Как я могу это сделать? Я попытался найти ответ, но x
, похоже, не имеет метода getElementByTagName()
или чего-то подобного.
Спасибо!
Я принял этот ответ, потому что он не использует 'jQuery' и по этой причине мне это нужно. Тем не менее у меня есть вопрос ... Если мой 'xmlStr' был из' (..). ResponseXML' поэтому зачем мне создавать строку, затем снова конвертировать ее в XML и, наконец, использовать 'getElement ...'? Почему я не мог работать с оригинальным XML? Это только что прочитанное? –
Кажется, вам нужно установить заголовок Content-Type в text/xml: https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseXML – Greg
В нем говорится: «Если сервер не делает», t укажите заголовок Content-Type в виде text/xml или application/xml, вы можете использовать overrideMimeType(), чтобы заставить XMLHttpRequest анализировать его как XML в любом случае. ' Дело в том, что сервер указывает Content-Type как' text/xml' , так что это странно. –