最近在学习ajax,教程中提到这个一个例子:function getText(url, callback) {
var request = new XMLHttpRequest(); // Create new request
request.open("GET", url); // Specify URL to fetch
request.onreadystatechange = function() { // Define event listener
// If the request is compete and was successful
if (request.readyState === 4 && request.status === 200) {
var type = request.getResponseHeader("Content-Type");
if (type.match(/^text/)) // Make sure response is text
callback(request.responseText); // Pass it to callback
}
};
request.send(null); // Send the request now
}我把上面的代码运用起来:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
</head>
<body>
<script type="text/javascript">
function getText(url) {
var request = new XMLHttpRequest(); // Create new request
request.open("GET", url); // Specify URL to fetch
request.onreadystatechange = function () { // Define event listener
// If the request is compete and was successful
if (request.readyState === 4 && request.status === 200) {
var type = request.getResponseHeader("Content-Type");
//myfun(type);
myTest(request.responseText);
}
};
request.send(null); // Send the request now
}
function myTest(str) {
document.getElementById('A3').innerHTML = str;
}
</script>
<p><b>Response:</b>
<br /><span id="A3"></span>
</p>
<button onclick="getText('/js/mytest.htm')">Get TEXT</button>
</body>
</html>
这里面只用了一个 function getText(url)参数,可以正常显示,但是如果是:function getText(url,myTest())就不显示了,不知道为什么这个callback是怎么用的,最好是能有个实例
var request = new XMLHttpRequest(); // Create new request
request.open("GET", url); // Specify URL to fetch
request.onreadystatechange = function() { // Define event listener
// If the request is compete and was successful
if (request.readyState === 4 && request.status === 200) {
var type = request.getResponseHeader("Content-Type");
if (type.match(/^text/)) // Make sure response is text
callback(request.responseText); // Pass it to callback
}
};
request.send(null); // Send the request now
}我把上面的代码运用起来:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
</head>
<body>
<script type="text/javascript">
function getText(url) {
var request = new XMLHttpRequest(); // Create new request
request.open("GET", url); // Specify URL to fetch
request.onreadystatechange = function () { // Define event listener
// If the request is compete and was successful
if (request.readyState === 4 && request.status === 200) {
var type = request.getResponseHeader("Content-Type");
//myfun(type);
myTest(request.responseText);
}
};
request.send(null); // Send the request now
}
function myTest(str) {
document.getElementById('A3').innerHTML = str;
}
</script>
<p><b>Response:</b>
<br /><span id="A3"></span>
</p>
<button onclick="getText('/js/mytest.htm')">Get TEXT</button>
</body>
</html>
这里面只用了一个 function getText(url)参数,可以正常显示,但是如果是:function getText(url,myTest())就不显示了,不知道为什么这个callback是怎么用的,最好是能有个实例
function getText(url,myTest)
我修改为:function getText(url,myTest) {……}为什么还是不行?是不是<button onclick="getText('/js/mytest.htm',myTest(str))">Get TEXT</button>这里面有错?
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
</head>
<body>
<script type="text/javascript">
function getText(url,callback) {
var request = new XMLHttpRequest(); // Create new request
request.open("GET", url); // Specify URL to fetch
request.onreadystatechange = function () { // Define event listener
// If the request is compete and was successful
if (request.readyState === 4 && request.status === 200) {
var type = request.getResponseHeader("Content-Type");
//myfun(type); callback(type);
}
};
request.send(null); // Send the request now
}
function myTest(str) {
document.getElementById('A3').innerHTML = str;
</script>
<p><b>Response:</b>
<br /><span id="A3"></span>
</p>
<button onclick="getText('/js/mytest.htm',myTest)">Get TEXT</button>
</body>
</html>这样就对了,明白了
var myTest = function() { console.log("I'm myText") }var getText = function(url, myTest) { }
//or
var getText = function(url, function () { console.log("I'm myText") }) { }
如果需要带两个参数。再定义一个带两个参数的方法function getText2(url, func) {//func就是你的那个myTest方法名 。注意javascript不支持方法重载,必须重新起名字我也是新手,凭个人理解应该是这个问题