我正在尝试开始使用ASP.NET MVC AJAX 调用。
控制器:
public class AjaxTestController : Controller
{
//
// GET: /AjaxTest/
public ActionResult Index()
{
return View();
}
public ActionResult FirstAjax()
{
return Json("chamara", JsonRequestBehavior.AllowGet);
}
}
检视:
<head runat="server">
<title>FirstAjax</title>
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {
var serviceURL = '/AjaxTest/FirstAjax';
$.ajax({
type: "POST",
url: serviceURL,
data: param = "",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: successFunc,
error: errorFunc
});
function successFunc(data, status) {
alert(data);
}
function errorFunc() {
alert('error');
}
});
</script>
</head>
我只需要打印一个警报,控制器方法返回数据。上面的代码只是在我的视图上打印“chamara”。警报没有触发。
更新
我修改了我的控制器如下,它开始工作。我不清楚为什么它现在工作。有人请解释。参数“a”不相关,我添加它,因为我不能添加两个方法相同的方法名称和参数。我认为这可能不是解决方案,但它的工作
public class AjaxTestController : Controller
{
//
// GET: /AjaxTest/
[HttpGet]
public ActionResult FirstAjax()
{
return View();
}
[HttpPost]
public ActionResult FirstAjax(string a)
{
return Json("chamara", JsonRequestBehavior.AllowGet);
}
}
9条答案
按热度按时间mfuanj7w1#
删除data属性,因为您对服务器没有
POSTING
任何内容(您的控制器不需要任何参数)。在 AJAX 方法中,您可以使用
Razor
和@Url.Action
,而不是静态字符串:从您的更新:
monwx1rj2#
完成更新后,
1.它首先使用默认的HttpGet请求调用FirstAjax操作并呈现空白的Html视图。
1.稍后在加载该视图的DOM元素时, AJAX 调用将被触发并显示警告。
之前你只是将JSON返回到浏览器,而没有呈现任何HTML。现在它呈现了一个HTML视图,可以在其中获取JSON数据。
您不能直接将JSON转换为普通数据,而不能转换为HTML。
hrysbysz3#
使用Razor通过调用如下操作来动态更改URL:
jmo0nnb34#
如果你只需要在 AJAX 调用中点击C#方法,你只需要传递两个matter类型和url,如果你的请求是get,那么你只需要指定url。请按照下面的代码操作,它工作得很好。
C#程式码:
获取请求时的Java脚本代码
发布请求时的Java脚本代码以及[HttpGet]到[HttpPost]
注意:如果您在视图控制器所在的同一个控制器中使用FirstAjax,则url中不需要控制器名称,如
url: 'FirstAjax',
y4ekin9u5#
首先,没有必要在一个页面中有两个不同版本的jquery库,“1.9.1”或“2.0.0”足以使 AJAX 调用工作。
下面是您的控制器代码:
视图应如下所示:
hgb9j2n66#
这是针对您的UPDATE问题。
由于不能有两个具有相同名称和签名的方法,因此必须使用ActionName属性:
最新消息:
请参考this链接,进一步参考一个方法如何成为一个动作。非常好的参考。
wb1gzix07#
观;
控制器方法;
bq8i3lrv8#
而不是使用
url: serviceURL,
您是否向successFunc传递了两个参数?
k4ymrczo9#
在global.asax中添加“JsonValueProviderFactory”: