2011-08-29 58 views
2

正常工作,我有一个问题,就是类似于this stackoverflow

我送所选对象的列表,以“更新”的方法。这很好,问题在于成功回调。由于某种原因它不会发生。该页面只是闪烁一次。在萤火虫的净选项卡中,我可以看到对该网址的调用。控制器返回布尔,所以在响应我只有true。但显然我想要做的是更新基于该布尔的页面。这是MVC2项目 - 不确定这是否与它有关。

$.ajax({ 
    url: "/Update/UpdateAll", 
    dataType: 'json', 
    type: "POST", 
    data: { selected: selected, statusID: statusID }, 
    success: function (result) { 
     if (result) { 
      alert('all successful'); 
      $('#resultsFromUpdate').html("Success"); 
     } 
     else { 
      alert('no deal'); 
      $('#resultsFromUpdate').html("Fail"); 
     } 
    } 
}); 

UpdateAll控制器的方法:

public bool UpdateAll(string selected, string statusID) 
{ 
... 
> update some things 
> return true if fine 
> return fasle if not 
... 
} 

这正是使用AJAX,无需页面后点...所以我在做什么错?

回答

4

实际上应该有一个JsonResult作为返回类型,正如您指定“json”作为$ .ajax方法所期望的那样。另外,$ .post方法通常更易于使用。

+0

这是问题。现在像这样返回(为false)'返回Json(false,JsonRequestBehavior.AllowGet);'欢呼声 – baron

0

我的建议是使用Firebug或其他Javascript调试工具和/或指定'错误'回调,除了'成功'之外,至少在'alert'中指定'错误'回调。也许服务器发送的MIME类型不匹配,或者可能有其他原因。

2

这是深入了解web开发人员免费调试工具库的好地方。请注意,Chrome,Firefox和IE9都提供开发人员工具(只需按F12键即可)。这些允许您浏览代码并观察返回的变量。

您还可以使用fiddler来检查在浏览器和Visual Studio之间传递的内容。


需要注意的是写在ASP.NET 3.5回报启用JSON的WCF服务的对象,其中的返回值是一个数据成员d

你可以试试这个:

$.ajax({ 
    url: "/Update/UpdateAll", 
    dataType: 'json', 
    type: "POST", 
    data: { selected: selected, statusID: statusID }, 
    success: function (result) { 
     /* NOTE: Not checking result, but result.d */ 
     if (result.d) { 
      alert('all successful'); 
      $('#resultsFromUpdate').html("Success"); 
     } 
     else { 
      alert('no deal'); 
      $('#resultsFromUpdate').html("Fail"); 
     } 
    } 
}); 

如果我猜对我买彩票:-)

+0

对不起,这里没有web服务:)但关闭。我使用的是萤火虫,但我根本没有成功回电,只是发布而没有发生任何事情。现在我已经修复了MVC方法来返回'JsonResult',一切都按预期工作。谢谢你的信息! – baron