2013-04-11 101 views
2

我在调试我的JavaScript代码(如下)。Firebug在控制台中不显示JSON选项卡

在用户点击搜索按钮后,webgrid被填充。我在webgrid中添加了一个按钮,该按钮打开一个对话框,该对话框必须用来自JSON对象的值填充。

这是问题所在 - 当我使用萤火虫进行调试时,控制台中的JSON选项卡未显示。

下面是我的代码的一部分:

$('.edit-recipients').live('click', function() 
      { 
       $.getJSON('/Methods/GetRecipients/' + $(this).attr('id'), function (data) 
       { 
        var recipient = data; 
        console.log(recipient); 
       $('#edit-opno').val(recipient.OpNo); 

CONSOLE.LOG(受体)示出从我GetRecipients方法的值。
此代码$('#edit-opno').val(recipient.OpNo);是为了显示我的输入文本中的值,我在下面的代码。

<input type="text" name="opno" id="edit-opno" size="15" /> 

不过起初我以为GetRecipients未执行但是从萤火意识到它与执行console.log(收件人)执行显示的值,但没有JSON标签,从而无法来填充我的对话框输入框。

下面是我的服务器端代码:

@{ 
    Response.Cache.SetCacheability(HttpCacheability.NoCache); 
    if(UrlData[0].IsInt()){ 
     var db = Database.Open("sb_cpd"); 
     var sql = "SELECT * FROM cpd_recipients WHERE ID = @0"; 
     var recipients = db.QuerySingle(sql,UrlData[0]); 
     Json.Write(recipients, Response.Output); 
    } 
} 

我已经插入发生了什么的图像。注意我的对话框没有填充来自GetRecipients方法的值。 enter image description here

+2

听起来就像是响应头_content-type_未设置为_Application/json_ – sroes 2013-04-11 08:17:21

+0

谢谢你的回复。我已经设置了我的$ .ajax({type:“POST”,contentType:“application/json”等等,但仍然没有绑定数据到输入文本和JSON选项卡 – 2013-04-11 08:30:57

+0

这将设置请求标题,而不是响应头文件。响应头必须设置在服务器端。你能显示一些服务器端代码吗? – sroes 2013-04-11 08:41:43

回答

2

您应该将标头内容类型设置为application/json。那么萤火将识别的响应为JSON:

@{ 
    Response.Cache.SetCacheability(HttpCacheability.NoCache); 
    if(UrlData[0].IsInt()){ 
     var db = Database.Open("sb_cpd"); 
     var sql = "SELECT * FROM cpd_recipients WHERE ID = @0"; 
     var recipients = db.QuerySingle(sql,UrlData[0]); 
     Response.Headers.Add("Content-type", "application/json"); 
     Json.Write(recipients, Response.Output); 
    } 
} 
相关问题