使用 Javascript 解析 HTML 中的 AJAX 响应
Parse AJAX response in HTML using Javascript
我正在使用 Javascript 在我的代码中使用 AJAX 调用。
function loadFacility(callback)
{
//alert('In loadFacility');
var xmlhttp;
var keys=document.firstCallInformation.facilityselect.value;
var urls="http://localhost:8080/webfdms/showFirstCallInformation.do?vitalsId=366";
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status == 200)
{
//var some=xmlhttp.responseXML.documentElement;
var response = xmlhttp.responseText;
console.log(response)
callback(xmlhttp.responseText);
}
}
xmlhttp.open("GET",urls,true);
xmlhttp.send(null);
}
function loadFacilityCallback(response){
if(response != null){
//alert(response);
console.log(response);
var div = document.createElement("div");
div.innerHTML = response;
document.getElementById("facilityselect").innerHTML = div.querySelectorAll("select#facilityselect");;
}
编辑:
我已经更新了我的回调函数。但在这里我收到了 select 列表作为 [Object Nodelist]。现在如何在我的 HTML 中显示?
在回调函数中,我收到了 HTML 的响应,现在我想解析 HTML 响应,以便我可以进一步处理它。我正在使用普通的 javascript 来这样做。如何解析收到的 ajax 响应 HTML?
试试这个:
var dom='Your http response';
var wrapper=document.createElement('div');
wrapper.innerHTML=dom;
var elemContainer=wrapper.firstChild;
var elemToFind=elemContainer.querySelectorAll('option');
var facilityselect=document.getElementById('facilityselect');
facilityselect.innerHTML='';
for(var i=0, len=elemToFind.length; i < len; i++){
facilityselect.appendChild(elemToFind[i]);
}
Creating a fake div element and appending your string which contains a HTML
string will help.
To insert a DOM object in specific selector, you need to user appendChild method.In case you want to empty the selector and then insert the DOM then set innerHTML as empty (selector.innerHTML="") and then do the append operation.
创建一个 DIV
元素并将 HTML 放入其中 innerHTML
。这将解析它。
var div = document.createElement("div");
div.innerHTML = response;
现在您可以在 div
中处理它,例如div.querySelector(".classname")
。要获取所有 <select>
标签,请执行:
var selects = div.querySelectorAll("select");
要将其放入您的网页,您可以这样做:
document.getElementById("facilityselect").innerHTML = div.querySelector("select#facilityselect").innerHTML
我正在使用 Javascript 在我的代码中使用 AJAX 调用。
function loadFacility(callback)
{
//alert('In loadFacility');
var xmlhttp;
var keys=document.firstCallInformation.facilityselect.value;
var urls="http://localhost:8080/webfdms/showFirstCallInformation.do?vitalsId=366";
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status == 200)
{
//var some=xmlhttp.responseXML.documentElement;
var response = xmlhttp.responseText;
console.log(response)
callback(xmlhttp.responseText);
}
}
xmlhttp.open("GET",urls,true);
xmlhttp.send(null);
}
function loadFacilityCallback(response){
if(response != null){
//alert(response);
console.log(response);
var div = document.createElement("div");
div.innerHTML = response;
document.getElementById("facilityselect").innerHTML = div.querySelectorAll("select#facilityselect");;
}
编辑: 我已经更新了我的回调函数。但在这里我收到了 select 列表作为 [Object Nodelist]。现在如何在我的 HTML 中显示?
在回调函数中,我收到了 HTML 的响应,现在我想解析 HTML 响应,以便我可以进一步处理它。我正在使用普通的 javascript 来这样做。如何解析收到的 ajax 响应 HTML?
试试这个:
var dom='Your http response';
var wrapper=document.createElement('div');
wrapper.innerHTML=dom;
var elemContainer=wrapper.firstChild;
var elemToFind=elemContainer.querySelectorAll('option');
var facilityselect=document.getElementById('facilityselect');
facilityselect.innerHTML='';
for(var i=0, len=elemToFind.length; i < len; i++){
facilityselect.appendChild(elemToFind[i]);
}
Creating a fake div element and appending your string which contains a HTML string will help. To insert a DOM object in specific selector, you need to user appendChild method.In case you want to empty the selector and then insert the DOM then set innerHTML as empty (selector.innerHTML="") and then do the append operation.
创建一个 DIV
元素并将 HTML 放入其中 innerHTML
。这将解析它。
var div = document.createElement("div");
div.innerHTML = response;
现在您可以在 div
中处理它,例如div.querySelector(".classname")
。要获取所有 <select>
标签,请执行:
var selects = div.querySelectorAll("select");
要将其放入您的网页,您可以这样做:
document.getElementById("facilityselect").innerHTML = div.querySelector("select#facilityselect").innerHTML