2015-12-21 149 views
0

从HTML的输入值获得页面的HTML响应,我使用:获得Ajax响应

var theUrl = "https://example.com/users/22"; 
var xmlHttp = new XMLHttpRequest(); 
xmlHttp.open("GET", theUrl, false); 
xmlHttp.send(); 
var html = xmlHttp.responseText; 

现在,这将返回一个535行的HTML页面。 如果我们只是有我们的当前页面上的源代码,以获得标签(12345)的值,如下所示:

<input name="token" type="hidden" value="12345" /> 

我们会简单地使用:

document.getElementsByName("token")[0].value; 

但由于HTML作为一个名为html的变量在ajax响应中如何使用名称标记获取输入的值?我可以以某种方式将其转换为DOM元素,然后运行该代码? 只有javascript请不要jQuery。 谢谢。

+0

这个答案可能会帮助你解决问题:http://stackoverflow.com/questions/9598791/create-a-dom-document-from-string-without-jquery –

回答

2

尝试创建一个HTML元素,添加响应,然后解析它。 我们需要与getElementsByClassName添加一个类名来选择特定的输入,或者,如果你想选择所有的输入,你可以使用getElementsByTagName

var responseText = '<input name="token" class="token" type="hidden" value="12345" />' 
var el = document.createElement('html'); 
el.innerHTML = responseText; 
console.log(el.getElementsByClassName("token")[0].value); 
+0

正在获取:Uncaught TypeError:el.getElementsByName不是函数。 –

+0

看起来像只能在文档上调用getElmentsByName。我们可以在响应中调用getElemetnsByClassName – Chizzle

1

您可以分析您的xmltHttp.response文字是这样的:

var xmlString = "<input name='token1' type='hidden' value='12345' />"; // Use your xmlHttp.responseText here. This is for demonstration purposes 
 
var parser = new DOMParser(); 
 
var element = parser.parseFromString(xmlString, "text/html"); 
 
console.log(element.querySelectorAll('[name="token1"]')[0].value);