我正在尝试使用Javascript在onclick事件之后更新网页的innerHTML。我的Javascript(java.js)使用this code访问PHP页面,该页面回显innerHTML中输入的文本。问题是,我想更新两个彼此不相邻且具有不同元素ID的项(“颜色”表和“项目”表)的innerHTML。来自java.js的每个调用都可以单独正常工作(例如,如果已将其注释掉),但是当它们都运行时,第一个调用将停留在“正在加载”消息上,而第二个调用将起作用。在网络浏览器中加载“ content.php?item ='5'&color ='5'”会显示两个表。
我怀疑这与$ _GET []的机制有关(我不太了解;这是我第一次使用PHP)。但是调用应该按顺序进行,并且键(“ item”和“ color”)不冲突,因此我无法弄清楚出了什么问题。
java.js:
function makeActive(active_tab) {
//item table
callAHAH('content.php?item='+active_tab, 'item', 'getting items for tab '+active_tab+'. Wait...', 'Error');
//color table
callAHAH('content.php?color='+active_tab, 'color', 'getting colors for tab '+active_tab+'. Wait...', 'Error');
}
content.php:
if (isset($_GET['color'])) {
require 'color.php';
$index = 1*$_GET['color'];
$arr = $ITEM_TYPES[$index];
echoColorTable($arr); //makes table in color.php
} else {
echo "color not set "; //debug
}
if (isset($_GET['item'])) {
require 'item.php';
$index = 1*$_GET['item'];
echoItemTable($index); //makes table in item.php
} else {
echo "item not set "; //debug
}
最佳答案
问题在于您链接到的callAHAH函数。声明var
时,它没有req
关键字。因此,它是一个全局变量,一次只能有一个请求。它还在responseAHAH函数中重用该全局变量。通常,由于这样的原因,全局变量是一个坏主意。我建议完全抛弃callAHAH函数,并使用类似这样的方法来执行完全相同的操作而无需使用全局变量:
function loadInto(url, id, loading, error) {
var ajax;
var el = document.getElementById(id);
el.innerHTML = loading;
if (typeof XMLHttpRequest !== 'undefined')
ajax = new XMLHttpRequest();
else // Some people still support IE 6
ajax = new ActiveXObject("Microsoft.XMLHTTP");
ajax.onreadystatechange = function(){
if(ajax.readyState === 4){
if(ajax.status == 200){
el.innerHTML = ajax.responseText;
}else{
el.innerHTML = error;
}
}
};
ajax.open('GET', url);
ajax.send();
}
它也没有命名为
callAHAH
,这总是一个加号。关于php - Javascript/PHP更新多个项目的innerHTML,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11043126/