AJAX function(this)



我不熟悉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传递的变量。

相关内容

最新更新