【问题标题】:$.getJSON is not calling call back function$.getJSON 没有调用回调函数
【发布时间】:2013-05-15 11:20:07
【问题描述】:

在没有被调用的情况下回调。

function GetTrainingResults(id,callback){
    $.getJSON("/dashboard/GetTrainingResults/", {'id':id}, callback);
}
GetTrainingResults('id',function(result){
    alert(result);
});

后面的代码是

 public ActionResult GetTrainingResults(int id)
    {
        string test = "You are there.";
        return Json(test, JsonRequestBehavior.AllowGet);
    }

或者建议和其他方式。调用控制器方法并等待javascript中的方法响应的任务。

谢谢

【问题讨论】:

  • 当前代码成功触发了代码行为,但没有调用回调函数。
  • 使用完整的 .ajax 函数来查看它是否命中错误而不是成功。有关详细信息,请参阅下面的答案。

标签: c# javascript jquery asp.net-mvc


【解决方案1】:

如果你使用jQuery.ajax,你至少可以看到服务器返回的错误:

function getTrainingResults(id, callback) {
    $.ajax({
        url: "/dashboard/GetTrainingResults/",
        data: {id: id},
        success: function(data) {
            callback(data);
        },
        error: function(jqXHR, textStatus, errorThrown) {
            console.log(errorThrown);
            callback(errorThrown);
        }
    });
}

【讨论】:

  • 成功和错误回调在 jQUery 1.8 中被弃用,并在 2.0 中被移除。改用“完成”或“失败”的承诺。更多信息:api.jquery.com/jQuery.ajax
  • 糟糕,我还需要研究 2.0。感谢您的提醒!
【解决方案2】:

您的 Action 方法中的id 采用int,但您在JS 中将string'id' 传递给它。更改您的 JS 或您的操作方法以使类型匹配。

【讨论】:

  • 当我在 JS 中将 id 从 'id' 更改为 id 时,它说 id 未定义。
  • @SirajHussain 你应该把它改成一个数字,比如GetTrainingResults(1, function(result){
【解决方案3】:

检查您的请求是否成功返回,ajax 速记函数仅在请求成功时调用回调(即状态码 200 和正确的数据类型,即 json)。尝试完整的 .ajax jquery 函数,看看幕后发生了什么。

.getJSON() 也是等价的

$.ajax({
 dataType: "json",
 url: url,
 data: data,
 success: success
});

所以它可能会遇到错误:由于数据类型。

来源http://api.jquery.com/jQuery.getJSON/

【讨论】:

    猜你喜欢
    • 2011-01-17
    • 2012-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-16
    • 1970-01-01
    • 2018-07-25
    • 1970-01-01
    相关资源
    最近更新 更多