C# getJSON回调未启动
我使用以下脚本进行调用,该脚本在单击锚定标记时调用C# getJSON回调未启动,c#,jquery,asp.net,ajax,json,C#,Jquery,Asp.net,Ajax,Json,我使用以下脚本进行调用,该脚本在单击锚定标记时调用 function GetToken(videoId) { debugger; var json = $.getJSON("/Vod/RequestAccessToken/" + videoId, function(result) { alert("token recieved: " + result.token); }); } 在服务器应用程序中,我收到了调用,因此我知道它是一个有效的URL,但是没有调用回调。如果我设置了
function GetToken(videoId) {
debugger;
var json = $.getJSON("/Vod/RequestAccessToken/" + videoId, function(result) {
alert("token recieved: " + result.token);
});
}
在服务器应用程序中,我收到了调用,因此我知道它是一个有效的URL,但是没有调用回调。如果我设置了jquery代码(f11/f10),则调用回调
服务器以类的形式从MVC应用程序返回结果
// function called
public JsonResult RequestAccessToken(int id)
{
Token t = new Token();
t.MasterId = Guid.NewGuid();
var result = new TokenResult(t.MasterId);
return this.Json(result, JsonRequestBehavior.AllowGet);
}
// class returned
public class TokenResult
{
public TokenResult() { }
public TokenResult(Guid g) { token = g.ToString(); }
public string token = null;
}
当我通过浏览器结果访问url时=
{
"token":"c877453e-739d-4883-9310-91ddd707d6af"
}
可能的情况是,您没有返回有效的JSON。jQuery文档注意到,“从jQuery1.4开始,如果JSON文件包含语法错误,请求通常会自动失败。”您提供的JSON文本通过了吗?您可能还希望(至少暂时)切换到。它允许更多的错误处理。比如:
$.ajax({
url: "/Vod/RequestAccessToken/"+videoId,
dataType: 'json',
error: function(xhr, textStatus, errorThrown){
},
success: function(result){
alert("token recieved: " + result.token);
}
});
来自jQuery的:
重要提示:从jQuery1.4开始,如果JSON文件包含语法错误,请求通常会自动失败
那么,您的JSON有效吗
上面的输出是什么?(假设您的浏览器有一个
控制台
)如果结果不成功,则不会触发回调,这通常是由于返回的JSON无效。要对其进行测试,可以使用长格式的$.getJSON
,如下所示,以便查看错误:
$.ajax({
url: url,
dataType: 'json',
success: function(result){
alert("token recieved: " + result.token);
},
error: function(request, textStatus, errorThrown) {
alert(textStatus);
},
complete: function(request, textStatus) { //for additional info
alert(request.responseText);
alert(textStatus);
}
});
如果是一个JSON/解析器错误,您可以做出响应,看看JSONLint有什么问题,这里:您是在锚的单击处理程序中调用preventDefault()还是返回false 调用序列化Json方法时,需要发出信号,允许控制器操作中使用JSONGets:
public JsonResult ActionDateClicked(ActionViewModel vm)
{
vm.Model.Observation = "Changed";
return Json(vm, JsonRequestBehavior.AllowGet);
}
@马蒂-你犯了什么错误…这是有原因的,一定要贴出来。我没有犯错误。它在默默地失败。json result={“token”:“c877453e-739d-4883-9310-91ddd707d6af”}@Marty-试试我更新的答案,看看完整的答案抛出了什么,它看起来确实像是一个解析错误,但没有出现任何错误,看看上面的完整方法警告了什么,以获得确切的响应文本,需要查看文本响应来检查任何无效的内容。IE==没有发生任何事情(调试器甚至没有被点击)FF==Error,blank,Error是发现错误的有用在线工具。只需将json粘贴到左侧即可。
public JsonResult ActionDateClicked(ActionViewModel vm)
{
vm.Model.Observation = "Changed";
return Json(vm, JsonRequestBehavior.AllowGet);
}