Javascript 在mvc3中从客户端调用服务器端函数

Javascript 在mvc3中从客户端调用服务器端函数,javascript,html,ajax,asp.net-mvc-3,callback,Javascript,Html,Ajax,Asp.net Mvc 3,Callback,我已经遵循了,但我的解决方案中唯一有效的是错误消息警报:D 我的js ajax代码: $(document).ready(function () { $('a').click(function (e) { var data = { 'id': $(this).attr("id") }; var dataVal = JSON.stringify(data); $.ajax({ type: "POST",

我已经遵循了,但我的解决方案中唯一有效的是错误消息警报:D

我的js ajax代码:

$(document).ready(function () {
    $('a').click(function (e) {
        var data = { 'id': $(this).attr("id") };
        var dataVal = JSON.stringify(data);

        $.ajax({
            type: "POST",
            url: "@Url.Action("ActionName", "ControllerName")", 
            contentType: "application/json; charset=utf-8",
            data: dataVal,
            dataType: "json",
            success: function (id) {
                alert(data.d);
                alert("yay! it works!");
            },
            error: function(id){
                alert("haha, it doesn't work! Noob!");
            }
        });
        return false;
    });
});
它位于主体的末尾,因此在呈现所有其他html内容后加载

这是我在控制器中的回拨功能:

[HttpPost]
public ActionResult Hello(string id)
{
    return RedirectToAction(id);
}
以及HTML锚定标记:

<a href="#" style="float:left; font-size:13px;" id="pageName">Read more</a>

你必须修改你的方法

public ActionResult Media()
{
    //do some stuff here 

    return View();
}
差不多

public JsonResult Media()
{
    //do some stuff here 
    return Json(new
                {
                    myData = RenderPartialViewToString("ViewName", optionalModel),
                    errorMessage = error
                });
}   
添加以下方法以参考


这个
$(文档).ready(函数(){})
本身是您的保证,它将在DOM就绪时执行。你可以把它放在任何你想要的地方,而不只是放在页面的末尾。你应该返回
JsonResult
。什么是重定向到操作(id)?向我们显示重定向位置的代码。这不是您的问题,但无论如何都是错误的:
success:function(id)
。它应该是
success:function(data)
,因为您在内部依赖它:
alert(data.d)
@Satpal-我更新了我的帖子。@MelanciaUK-仍然不起作用。很好,但是为什么不使用JsonResult而不是ActionResult呢?@MelanciaUK,欢呼,因为
ActionResult
可以处理
Json
就这样离开了它。也更新了答案
public JsonResult Media()
{
    //do some stuff here 
    return Json(new
                {
                    myData = RenderPartialViewToString("ViewName", optionalModel),
                    errorMessage = error
                });
}   
protected string RenderPartialViewToString(string viewName, object model)
{
    if (string.IsNullOrEmpty(viewName))
        viewName = ControllerContext.RouteData.GetRequiredString("action");

    ViewData.Model = model;

    using (StringWriter sw = new StringWriter()) {
        ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(ControllerContext, viewName);
        ViewContext viewContext = new ViewContext(ControllerContext, viewResult.View, ViewData, TempData, sw);
        viewResult.View.Render(viewContext, sw);

        return sw.GetStringBuilder().ToString();
    }
}