将ajax响应填充到div中的问题

时间:2014-05-15 14:56:32

标签: javascript jquery ajax asp.net-mvc

我错过了什么?我已经通过Id添加了get元素,我肯定得到了回复,我使用firebug进行了检查并且响应是正确的。但我无法弄清楚为什么它不会填充我的div区域。

<script>
$(document).ready(function () {
    $("#cmdSend").click(function () {
        // Get he content from the input box
        var mydata = document.getElementById("cmdInput").value;
        $.ajax({
            type: "POST",
            url: "/Terminal/processCommand",
            data: { cmd: mydata },  // pass the data to the method in the Terminal Contoller
            success: function (data) {
                //alert(data);
                // we need to update the elements on the page
                document.getElementById("terminal").value = document.getElementById("terminal").value + mydata;
                document.getElementById("terminal").value = document.getElementById("terminal").value + data;
            },
            error: function (e) { alert(e); }
        })
    });
});
</script>

Div我希望将回复放入:

 <div class="terminal" style="overflow:scroll">
 <br>
 </div>

3 个答案:

答案 0 :(得分:1)

首先,您正在调用document.getElementById(),但您的div没有终端ID,它有一个名为terminal的类。

其次,您正在使用jQuery,但随后切换回经典JavaScript。您可以将代码更新为以下内容:

success: function (data) {
     //alert(data);
     // we need to update the elements on the page
     var existingHtml = $(".terminal").html(); 
     $(".terminal").html(existingHtml + mydata + data);
}

请注意,$(".SomeName")选择器用于按类选择,$("#SomeName")用于按ID选择。

编辑并注意

如果这个终端div可以开始在其中获取大量数据,你可以考虑使用jQuery中的.append()函数来防止必须复制HTML并在每次重写HTML时提出要求。更新将类似于以下内容(它更短一点,也应该更有效)

success: function (data) {
     //alert(data);
     // we need to update the elements on the pag
     $(".terminal").append(mydata + data);
}

答案 1 :(得分:0)

如果您想通过id获取元素,请在div中添加一个id:

<div id=terminal class="terminal" style="overflow:scroll">
<br>
</div>

答案 2 :(得分:0)

如果你想改变不使用jquery的div的内容,你应该使用innerHTML而不是value。

document.getElementById("divID").innerHTML = document.getElementById("divID").innerHTML + data