2012-03-02 42 views
1

我很努力地用Ajax返回视图或部分视图。无论何时我将返回类型更改为不是JS的事件,ajax命令都不会成功。我需要返回部分视图,因为我想返回大量数据。Ajax成功返回视图时

这是我当前的代码:

(控制器)

[HttpPost] 
    public ActionResult AjaxTestController(string Input) 
    { 
     string Results = Input + " -- TestTestTest"; 

     return PartialView("Test", Results); 
     //return new JsonResult() { }; 
    } 

(查看)

function AjaxTest() { 
alert("test"); 
$.ajax({ 
    type: "POST", 
    url: "Home/AjaxTestController", 
    data: "Input=Test11111",   
    success: function() { 
     alert("Success!"); 
    } 
}); 

谢谢!

回答

0

可以使用.post的$命令为:

function AjaxTest() { 
alert("test"); 
$.post({ 
    url: "Home/AjaxTestController", 
    data: "Input=Test11111",   
    success: function (response) { 
     alert(response); 
    } 
}); 
0

尝试以下操作:

$(function() { 
    $('#submit').live('click', function() { 
     AjaxTest(); 
    }); 
}); 

function AjaxTest() { 
    $.ajax({ 
     type: "POST", 
     url: '@Url.Action("AjaxTestController", "Home")', 
     data: { Input: "Test - " + new Date() }, 
     success: function (data) { 
      $('#partialResult').html(data); 
     }, 
     error: function (xhr, err) { 
      alert(xhr.responseText); 
     } 
    }); 
}; 

您的视图中,并确保你有你的目标DIV设置为偏被填充到:

<div id="partialResult"></div> 

另外,对于上面的例子,我在视图中添加了一个按钮来启动ajax (纯粹用于测试):

<input type="button" value="Submit" id="submit" /> 

你的“partialview”应该是这个样子:

@model string 
<h2> 
    Partial Test</h2> 
<p> 
    @Model 
</p> 

没有其他变化,需要对现有的行动这是需要现在运行。

[UPDATE] - 我更改了AjaxTest()方法以包含错误事件(其结果被捕获到警报中)。希望这可能会有所帮助。

+0

我是一个有点困惑......我不知道该代码是怎么回事,使成功的功能触发,当我返回一个局部视图。 – user1157885 2012-03-02 15:21:14

+0

你好。 'magic'部分包含在这里'success:function(data)'其中'data'将partialview的内容返回给客户端,然后目标div被填充该结果。我知道这是有效的,因为我实际上尝试过它。使用上面的代码时你会遇到什么问题?基本上,'success'本身不是一个函数[方法],它是'$ .ajax'对象引发的事件。这是一个很大的差异,也许这就是你需要澄清的问题:-) – 2012-03-02 15:27:21

+0

嗯..假设我的控制器代码是正确的(在原始文章中),但在进行这些更改后仍然不成功。 – user1157885 2012-03-02 15:38:40

0

部分视图与视图不同,您必须指定部分视图的完整路径或将其放在共享文件夹中。否则会返回未找到并且从未成功。无论如何这总是为我工作,尽量

partialView("~/Views/ControllerView/Test.cshtml")