我是asp.net mvc的初学者,想要从控制器到ajax变量获取简单的json,为此目的在视图页面中写这个ajax函数:
<script>
var OutPut;
OutPut = "behzad";
function CallService() {
$.ajax({
url: '@Url.Action("callService", "myPassword")',
type: 'GET',
dataType: 'json',
cache: false,
data: { 'id': 2 },
success: function (color) {
OutPut= color;
},
error: function () {
alert('Error occured');
}
});
alert("I think is ok!"+":"+OutPut);
}
</script>
和这个控制器:
[HttpGet]
public JsonResult callService(int id)
{
string JSON = "behzad";
return Json(JSON,JsonRequestBehavior.AllowGet);
}
ajax函数在视图页面中使用此html代码调用:
<button type="button" class="btn btn-success" onclick="CallService()">Success</button>
但这条线在ajax函数中:
alert("I think is ok!"+":"+OutPut);
输出是未定义的,发生了什么?控制器返回null?或者为什么我得到未定义的警报?谢谢。
答案 0 :(得分:2)
由于AJAX调用是异步的,您应该将警告置于成功回调中:
<script>
function CallService() {
$.ajax({
url: '@Url.Action("callService", "myPassword")',
type: 'GET',
cache: false,
data: { 'id': 2 },
success: function (color) {
alert("I think is ok!" + ":" + color);
},
error: function () {
alert('Error occurred');
}
});
}
</script>