我不熟悉ajax,我在学习的过程中,但据我所知,它利用javascript访问DOM,所以我的问题是,是否有可能把一个参数内的函数?
<script type="text/javascript">
function loadXMLDoc( * * this * * ) {
var xmlhttp;
if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
} else { // code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET", ""
test.php ? access = "**+this**", false);
xmlhttp.send();
document.getElementById("myDiv").innerHTML = xmlhttp.responseText;
}
</script>
这样不行吗?
非常感谢你的帮助
JS中的this
根据您所运行的上下文而变化。取决于你怎么称呼它,它会改变。
阅读本文获取更多信息:http://www.quirksmode.org/js/this.html
xmlhttp.open("GET",""test.php?access="**+this**",false);
这个调用没有多大意义,因为this
指的是一个对象,但你实际上试图做的是字符串连接(将两个字符串加在一起)。
如果需要调用变量,请使用变量代替this
关键字。
function loadXMLDoc(accessVar) {
....
xmlhttp.open("GET","test.php?access=" +accessVar ,false);
}
loadXMLDoc('accessIdentifier'); //passes the value 'accessIdentifier' to your method so it is passed along in the querystring.
你很接近了。看起来你用的是w3schools的例子。请注意,该网站并不总是最可靠的来源。详见http://w3fools.com/
再看一遍他们的代码,因为它是从他们的页面上取下来的:
var xmlhttp;
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)
{
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","ajax_info.txt",true);
xmlhttp.send();
可以看到,"on success"代码位于onreadystatechange
事件处理程序中。您的示例代码有三个问题:一个是您传递变量的方式,两个是您使用this
的方式,三个是您的响应处理程序不会像预期的那样工作。
var xmlhttp;
var var1 = 'testdata';
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)
handleAjaxResponse(responseText);
}
xmlhttp.open("GET","ajax_info.php?var1="+var1,true);
xmlhttp.send();
function handleAjaxResponse(resp) {
document.getElementById("myDiv").innerHTML=resp;
}
对于this
来说,它指的是当前的执行范围,完全是另一个主题。它不是通过AJAX传递的变量。