嘿伙计们,抱歉我的英语前锋不好。
我有这段代码:
<body>
<div id="left">
<p><a name = "container" value="topright" href="javascript:handleContent('topright')" onclick="loadContent('hallo1.php');">Hallo Welt 1</a></p>
<p><a name = "container" value="bottomright" href="javascript:handleContent('bottomright')" onclick="loadContent('hallo2.php');">Hallo Welt 2</a></p>
</div>
<div id="topright"></div>
<div id="bottomright"></div>
</body>
和Ajax:
var xmlHttpObject = false;
if (typeof XMLHttpRequest != 'undefined')
{
xmlHttpObject = new XMLHttpRequest();
}
if (!xmlHttpObject)
{
try
{
xmlHttpObject = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e)
{
try
{
xmlHttpObject = new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e)
{
xmlHttpObject = null;
}
}
}
function loadContent(id){
xmlHttpObject.open('get', id);
xmlHttpObject.onreadystatechange = handleContent;
xmlHttpObject.send(null);
return false;
}
function handleContent(){
if (xmlHttpObject.readyState == 4)
{
document.getElementById('topright').innerHTML = xmlHttpObject.responseText;
}
}
如果我点击“Hallo Welt 1”,我想在右上方的div中回显Hallo1.php。 因此,如果我单击“Hallo Welt 2”,我想在右下角div中回显Hallo2.php。 我的Ajax代码中有些东西是错误的。请帮助我,我是新的:)
先谢谢
答案 0 :(得分:0)
基本问题是如何将参数传递给handleContent。 href =“”目前没有做任何事情。 解决方案是通过一个封盖传递“topright”或“bottomright”。这是这样的:
(function (t){
return function(){
handleContent(t);
}
})(target);
这将创建一个直接调用的函数,并返回一个“绑定”参数的函数(这称为闭包)。
我认为你的德语: Dumusstdafürsorgendas deine Argumenterichtigübertragenwerden。 Das machst du am einfachsten mit einem sogenannten Closure(eine Funktion die deinen参数in sich selbst speichert)。
解决方案(在Firefox中测试):
<body>
<div id="left">
<p><a name = "container" value="topright" onclick="loadContent('hallo1.php', 'topright');">Hallo Welt 1</a></p>
<p><a name = "container" value="bottomright" onclick="loadContent('hallo2.php', 'bottomright');">Hallo Welt 2</a></p>
</div>
<div id="topright"></div>
<div id="bottomright"></div>
<script>
var xmlHttpObject = false;
if (typeof XMLHttpRequest != 'undefined')
{
xmlHttpObject = new XMLHttpRequest();
}
if (!xmlHttpObject)
{
try
{
xmlHttpObject = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e)
{
try
{
xmlHttpObject = new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e)
{
xmlHttpObject = null;
}
}
}
function loadContent(id, target){
xmlHttpObject.open('get', id);
xmlHttpObject.onreadystatechange = (function(t){return function(){ return handleContent(t);}})(target);
xmlHttpObject.send(null);
return false;
}
function handleContent(target){
if (xmlHttpObject.readyState == 4)
{
document.getElementById(target).innerHTML = xmlHttpObject.responseText;
}
}
</script>
</body>