Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# getJSON回调未启动_C#_Jquery_Asp.net_Ajax_Json - Fatal编程技术网

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);
        }