Ajax返回[object HTMLInputElement]

时间:2014-07-26 18:25:06

标签: javascript ajax object

我正在使用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;

?>

1 个答案:

答案 0 :(得分:0)

因为你已经在不同的函数kalkulacja()中声明了工作人员,并且你试图在不同的函数中使用变量,即save_staff。

var dane = "staff=" + staff;

这里变量人员的范围以函数kalkulacja结束,javascript在HTML中搜索id =&#34; staff&#34;在这种情况下,你的HTMLInputObject。

因此,在save_staff函数中声明变量,或者如果要检查它,请尝试更改input元素的id,看看它是否返回undefined。