如果调用函数时提供的参数包含 space,则不会调用函数
If the parameter supplied while calling a function contains space, function is not called
我正在使用 last.fm api。我有一个 JavaScript AJAX 函数是这样的,
function showart(art) {
if (art=="") {
document.getElementById("info").innerHTML="";
return;
}
if (window.XMLHttpRequest) {
xmlhttp=new XMLHttpRequest();
} else {
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
document.getElementById("info").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","5.php?a="+art,true);
xmlhttp.send();
}
这是我调用它的 PHP 代码。
for($i=1;$i<=10;$i++) {
echo '<table><td width="36px">';
echo '<img src="'.$info->topartists->artist[$i-1]->image.'"></td>';
echo '<td><a class="artist" href=# onclick=showart(\''.$info->topartists->artist[$i-1]->name.'\')>'.$info->topartists->artist[$i-1]->name.'</a></td></table>';
}
只要 $info->topartists->artist[$i-1]->name
在艺术家的名字中包含 space,例如 'Mobb Deep',则不会调用该函数,例如,如果艺术家的名字是 'Adele',正在调用该函数。如何解决这个问题?
您必须对参数值进行编码:
xmlhttp.open("GET","5.php?a=" + encodeURIComponent(art), true);
这将正确编码 space,服务器将对其进行解码。
edit 创建 <a>
标签的代码没有将 "onclick" 属性值放在引号中,所以当 HTML 是解析的事件处理程序代码最终被破坏。你应该引用代码:
echo '<td><a class="artist" href=# onclick="showart(\''.$info->topartists->artist[$i-1]->name.'\')">'.$info->topartists->artist[$i-1]->name.'</a></td></table>';
请注意在 showart()
调用周围添加的 "
引号。
我正在使用 last.fm api。我有一个 JavaScript AJAX 函数是这样的,
function showart(art) {
if (art=="") {
document.getElementById("info").innerHTML="";
return;
}
if (window.XMLHttpRequest) {
xmlhttp=new XMLHttpRequest();
} else {
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
document.getElementById("info").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","5.php?a="+art,true);
xmlhttp.send();
}
这是我调用它的 PHP 代码。
for($i=1;$i<=10;$i++) {
echo '<table><td width="36px">';
echo '<img src="'.$info->topartists->artist[$i-1]->image.'"></td>';
echo '<td><a class="artist" href=# onclick=showart(\''.$info->topartists->artist[$i-1]->name.'\')>'.$info->topartists->artist[$i-1]->name.'</a></td></table>';
}
只要 $info->topartists->artist[$i-1]->name
在艺术家的名字中包含 space,例如 'Mobb Deep',则不会调用该函数,例如,如果艺术家的名字是 'Adele',正在调用该函数。如何解决这个问题?
您必须对参数值进行编码:
xmlhttp.open("GET","5.php?a=" + encodeURIComponent(art), true);
这将正确编码 space,服务器将对其进行解码。
edit 创建 <a>
标签的代码没有将 "onclick" 属性值放在引号中,所以当 HTML 是解析的事件处理程序代码最终被破坏。你应该引用代码:
echo '<td><a class="artist" href=# onclick="showart(\''.$info->topartists->artist[$i-1]->name.'\')">'.$info->topartists->artist[$i-1]->name.'</a></td></table>';
请注意在 showart()
调用周围添加的 "
引号。