2013-05-15 50 views
3

回撥未被呼叫。

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中等待方法響應。

感謝

+0

當前代碼成功觸發代碼behing但它並沒有打電話回叫功能。 –

+0

使用完整的.ajax函數來查看它是否發生錯誤而不是成功。有關更多詳情,請參閱下面的答案。 –

回答

1

id在您的行動方法採用int,但你傳遞給它的一個'id'string你JS。要麼改變你的JS或你的操作方法,以便類型匹配。

+0

當我從JS中的'id'更改它的id時,它說id是未定義的。 –

+0

@SirajHussain你應該把它改成一個數字,像'GetTrainingResults(1,function(result){' – mattytommo

0

檢查您的請求是否成功返回,如果請求成功(即狀態碼200和正確的數據類型,即json),則ajax簡寫函數僅調用回調函數。嘗試完整的.ajax jquery函數,看看底下發生了什麼。

.getJSON()是equivient太

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

所以它可能是擊中錯誤:由於數據類型。

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

3

如果使用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); 
     } 
    }); 
} 
+1

)成功和錯誤回調從jQUery 1.8開始被棄用,並且在2.0上被移除,使用promises「done」或「fail」在這裏更多信息:http://api.jquery.com/jQuery.ajax/ – amhed

+0

Ooops,我仍然需要調查2.0。 –