我正在使用ajax创建小型应用程序。到目前为止,一切都很顺利,但我无法弄清楚为什么ajax会从php返回staff = [object HTMLInputElement]。我将不胜感激任何帮助。这是我的代码:
<body onload="init()">
<div class="container">
<table>
<thead>
<tr>
<td></td>
<td>pon</td>
<td>wt</td>
<td>śr</td>
<td>czw</td>
<td>pt</td>
<td>sob</td>
<td>nd</td>
<td>tydz.</td>
<td>miesiąc</td>
</tr>
</thead>
<tbody id="tbody">
</tbody>
</table>
<input name="staff" id="staff" type="text"/>
<input type="submit" value="Dodaj pracownika" onclick="add_staff();"/>
</div>
</body>
JS:
//Funkcja init() inicjuje skrypt w momencie załadowania się body
function init() {
}
//Funkcja tworzy nowy obiekt ajax
var ajax = createXmlHttpRequestObject();
function createXmlHttpRequestObject() {
var ajax;
if(window.ActiveXObject) {
try {
ajax = new ActiveXObject("Microsoft.XMLHTTP");
} catch(e) {
ajax = false;
}
}
else {
try {
ajax = new XMLHttpRequest();
} catch(e) {
ajax = false;
}
}
if (!ajax)
alert("Nie uadło się utworzyc obiektu");
else
return ajax;
}
//Dodawanie nowego pracownika do tabeli
function add_staff() {
//Referencje do wartości pola "dodaj pracownika"
var staff = document.getElementById("staff").value;
alert(staff);
var tb_td = document.getElementById("tbody");
var record = "<tr><td>" + staff +"</td><td><input type='time'><input type='time'></td><td><input type='time'><input type='time'></td><td><input type='time'><input type='time'></td><td><input type='time'><input type='time'></td><td><input type='time'><input type='time'></td><td><input type='time'><input type='time'></td><td><input type='time'><input type='time'></td><td></td><td></td></tr>";
save_staff();
}
//Funkcja liczy godziny w każdy wierszu tabeli
function kalkulacja() {
var kolumna = document.getElementsByTagName("td").item(23).innerHTML;
alert(kolumna);
}
//Funkcja zapisuje w bazie danych pracownika via ajax
function save_staff() {
if(ajax) {
var dane = "staff=" + staff;
ajax.open("POST", "kalendarz_dane.php", true);
ajax.onreadystatechange = handle;
ajax.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
ajax.send(dane);
}
}
//Funkcja obsługuje odpowiedź serwera z funkcji save_staff
function handle() {
if(ajax.readyState == 4) {
if(ajax.status == 200) {
try {
document.getElementById("tbody").innerHTML = ajax.responseText;
}catch(e) {
alert(e.toString());
}
} else {
alert(ajax.statusText);
}
}
}
PHP:
<?php
header('Content-type: text/html; charset=utf-8');
$dane = $_POST["staff"];
echo $dane;
?>
答案 0 :(得分:0)
因为你已经在不同的函数kalkulacja()中声明了工作人员,并且你试图在不同的函数中使用变量,即save_staff。
var dane = "staff=" + staff;
这里变量人员的范围以函数kalkulacja结束,javascript在HTML中搜索id =&#34; staff&#34;在这种情况下,你的HTMLInputObject。
因此,在save_staff函数中声明变量,或者如果要检查它,请尝试更改input元素的id,看看它是否返回undefined。