我正在努力用Ajax返回视图或部分视图。每当我将返回类型更改为不是JSon的东西时,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 :(得分:0)
您可以使用$ .post命令:
function AjaxTest() {
alert("test");
$.post({
url: "Home/AjaxTestController",
data: "Input=Test11111",
success: function (response) {
alert(response);
}
});
答案 1 :(得分: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" />
你的“部分视图”应该是这样的:
@model string
<h2>
Partial Test</h2>
<p>
@Model
</p>
现有的操作不需要进行任何其他更改,现在可以根据需要进行操作。
[更新] - 我更改了AjaxTest()
方法以包含错误事件(其结果在警报中捕获)。希望这可能会有所帮助。
答案 2 :(得分:0)
部分视图与视图不同,您必须指定部分视图的整个路径或将其放在共享文件夹中。否则将返回未找到但永远不会成功。这总是对我有用,试试
partialView("~/Views/ControllerView/Test.cshtml")