Jquery 通过ajax返回列表以填充表-值定义不足

Jquery 通过ajax返回列表以填充表-值定义不足,jquery,ajax,json,signalr,asp.net-mvc-5,Jquery,Ajax,Json,Signalr,Asp.net Mvc 5,我在学信号员,我在听 当我返回列表时,我所有的列值都被低估了 下面是我的视图当前的构造方式 <script type="text/javascript"> $(function () { // Proxy created on the fly var job = $.connection.myHub; // Declare a function on the job hub so the server can invoke it job.clie

我在学信号员,我在听 当我返回列表时,我所有的列值都被低估了

下面是我的视图当前的构造方式

<script type="text/javascript">

$(function () {

    // Proxy created on the fly
    var job = $.connection.myHub;

    // Declare a function on the job hub so the server can invoke it
    job.client.displayStatus = function () {
        getData();
    };

    // Start the connection
      $.connection.hub.start().done(function () {
      getData();
    });
});

function getData() {
    var $tbl = $('#tblJobInfo');
    $.ajax({
        url: '@Url.Action("Get", "Home")',
        type: 'GET',
        datatype: 'json',
        success: function (data) {
            console.log(data);
            if (data.length > 0) {
                $tbl.empty();
                $tbl.append(' <tr><th>ID</th><th>Name</th><th>lname</th><th>phone</th></tr>');
                var rows = [];

                for (var i = 0; i < data.length; i++) {
                    rows.push(' <tr><td>' + data[i].id + '</td><td>' + data[i].fname + '</td><td>' + data[i].lname + '</td><td>' + data[i].phone + '</td></tr>');
                }
                $tbl.append(rows.join(''));
            }
        }
    });
}
</script>

<div>
    <table id="tblJobInfo" style="text-align:center;margin-left:10px"></table>
</div>
如有任何帮助/建议,将不胜感激

非常感谢

更新

下面是执行console.log(数据)时在浏览器中写入的内容

您需要这样做:

$.connection.hub.start().done(function () {
    getData();
});

由于
start()
是异步的,因此当前代码中对
getData()
的调用是在
start()
完成之前执行的。通过将代码放入
done
,您可以确信SignalR已在该点创建了连接

编辑:

我认为问题在于控制器方法。它看起来像这样吗

public ActionResult Get()
{
    var data = Get(); // Which returns List<JonInfo>.

    return Json(data);
}
public ActionResult Get()
{
var data=Get();//返回列表。
返回Json(数据);
}
您需要将作业列表作为JSON返回

编辑:

根据我们在聊天室中的对话,问题是由以下电话引起的:

Clients.All.displayStatus()

以及打开多个选项卡。因此,将代码更改为

Clients.Caller.displayStatus()


应该可以了。

Hi Jason,谢谢你提供的附加信息,我用你提供的代码片段替换了我的原始代码片段,但是我的表仍然有“未定义”的值,即使我在调试confrim时确实看到了正确的值,
success
函数中的变量
data
确实包含值?是,我在返回数据上设置了一个断点;展开变量,我可以看到1行4列数据,分别是mt details id=1,fname=scott,lname=test,phone=07777这也有点奇怪,我有1行数据,但是当我在for循环前面放一个警报时,它会警告说data.length=68?你能做
console.log(data)吗
作为
成功的第一行
?这说明了什么,你能在你的问题中贴出来吗?
System.Collections.Generic.List`1[KnockOutjsTutorial.Models.JobInfo]
$.connection.hub.start().done(function () {
    getData();
});
public ActionResult Get()
{
    var data = Get(); // Which returns List<JonInfo>.

    return Json(data);
}