查看,jQuery AJAX,Colorbox,parsingerror

|| 假设我在页面上有一个动作链接(我们称其为MainPage)。 Actionlink指向一个返回View的操作方法(我们称其为PopupView)。 MainPage的document.ready()上的脚本说:“将colorbox插件附加到actionlink元素,因此,当用户单击它时,PopupView将打开”。 PopupView具有以下形式:
@using (Html.BeginForm(\"SavePopupData\", \"Home\", FormMethod.Post))
PopupView还将覆盖默认的提交行为:
$(\"form[action$=\'SavePopupData\']\").submit(function () {  

  $.ajax({
    url: $(this).attr(\"action\"),
    contentType: \'application/json; charset=utf-8\',
    type: \"POST\",
    success: function (data, textStatus, jqXHR) { alert(\'success!\'); },
    complete: function (jqXHR, textStatus) { alert(\'complete!\') },
    data: JSON.stringify(someData),
    dataType: \"json\",
    error: function (jqXHR, textStatus, errorThrown) { alert(textStatus); }
   });

  return false;
}
让我们看看SavePopupData操作方法中的内容:
[HttpPost]
public ActionResult SavePopupData(SomeDataType someData)
{
   bool result = _dal.SavePopupData(someData);
   return new JsonResult { Data = result };
}
现在,这里的所有内容均按预期工作。好吧,几乎所有东西。在Submit上,如果在SavePopupData操作方法上设置了断点,则可以看到数据安全地到达服务器,可以正确解析,并且_dal返回结果。而且一切正常。 但是,当它返回到客户端时,成功回调永远不会被触发,但是会在错误回调报告中提醒您有关解析错误的信息。 奇怪的是,如果您将所有内容都保留下来,并且只删除了colorbox的内容,那么它将起作用。尽管它将在新窗口中打开表单(这不是我想要的)。 启用colorobox会怎样?从技术上讲,它会在MainView页面中创建一个弹出窗口。我什至无法调试PopupView的脚本,因为Firebug和Chrome开发工具都无法识别它,并且脚本列表中也没有这样的脚本。但是在运行时它仍然可以工作。 你们有什么线索吗?我认为这可能与$ .ajax中的上下文有关。但是我不知道该怎么办,我不知道。请帮帮我     
已邀请:
您应该从控制器操作中返回
Json
结果而不是
JsonResult
[HttpPost]
public ActionResult SavePopupData(SomeDataType someData)
{
   bool result = _dal.SavePopupData(someData);
   return Json(new { Data = result });
} 
我已经纠正了,但是,按照您当前的方法,这将导致客户端失败,因为
JsonResult
Data
属性不是键/值对,而在上面的代码中是。差异非常微妙,引起许多头痛。您可以将当前方法更改为
return new JsonResult { Data = new {Data = result} }; 
    

要回复问题请先登录注册