我对ajax有问题。这是代码。
模型
public class ViewModel
{
public long requestedVar { get; set; }
public string ReturnedDescription { get; set; }
}
查看名称:addNewinfo
<head>
<script>
$.datepicker.regional['ru'] = {
closeText: "Закрыть",
prevText: "<Пред",
nextText: "След>",
currentText: "Сегодня",
monthNames: [
"Январь", "Февраль", "Март", "Апрель", "Май", "Июнь",
"Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь"
],
monthNamesShort: [
"Январь", "Февраль", "Март", "Апрель", "Май", "Июнь",
"Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь"
],
dayNames: ["воскресенье", "понедельник", "вторник", "среда", "четверг", "пятница", "суббота"],
dayNamesShort: ["вск", "пнд", "втр", "срд", "чтв", "птн", "сбт"],
dayNamesMin: ["Вс", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб"],
weekHeader: "Нед",
dateFormat: "dd.mm.yy",
firstDay: 1,
isRTL: false,
showMonthAfterYear: false,
yearSuffix: ""
};
</script>
<script>
var GlobalVar1=0;
$("#dropdownlist1").change(function getID() {
<some code>
GlobalVar1 = selectedValue;
alert(GlobalVar1);
$.ajax({
url: "@Url.Action("myMethod1", "Home")",
type: 'POST',
async: false,
data: { requestedVar : GlobalVar1},
success: function (data) {
alert('OK');
$("html").html(result);
},
error: function (error) {
alert('error');
}
});
});
</script>
</head>
<body>
<div>
@Html.DropDownListFor(m => m.SelectedDirectionID, new SelectList(Model.DirectionList.Select(x => new SelectListItem { Value = x.Id.ToString(), Text = x.DirectionName }), "Value", "Text"),"", new { @class = "Duration", required = "required", id="dropdownlist1" })
@Html.ActionLink("+", "_AddDirection", "Home", null, new { @class = "modal-link btn btn-success"})
<div>@Html.DisplayName("Choosen description")</div>
<div>@Html.TextBoxFor(m => m.ReturnedDescription, new { @class = "Duration", disabled = "disabled" })</div>
</div>
</body>
控制器:
[HttpPost]
public System.Web.Mvc.ActionResult myMethod1(ViewModel m)
{
var db = new DB();
ModelState.Clear();
var returnedVal = db.GetDesctiption(m.requestedVar).First();
m.ReturnedDescription = returnedVal.Description;
var vm = DataFactory.Refresh();
vm.ReturnedDescription = m.ReturnedDescription;
return View("AddNewInfo", vm);
}
update
现在一切工作方式:Ajax成功地发送了一个带有数据的后重点,我的控制器返回视图,此视图在浏览器中显示,但是返回的视图不包含任何JS脚本。
是问题:如何也使用JS脚本返回浏览器并返回删除值?
步骤i
更改您的动作方法,然后返回 JSON结果。
[HttpPost]
public JsonResult myMethod1(ViewModel m)
{
var db = new DB();
ModelState.Clear();
var returnedVal = db.GetDesctiption(m.requestedVar).First();
m.ReturnedDescription = returnedVal.Description;
var vm = DataFactory.Refresh();
vm.ReturnedDescription = m.ReturnedDescription;
return Json(vm,JsonRequestBehavior.AllowGet);
}
步骤II
更改您的AJAX成功选项。
$.ajax({
url: "@Url.Action("myMethod1", "Home")",
type: 'POST',
async: false,
data: { requestedVar : GlobalVar1},
success: function (data) {
if(data.ReturnedDescription){
$('#ReturnedDescription').val(data.ReturnedDescription); // This line to be noted.
}
// alert("Sending complete");
},
error: function (error) {
alert('error');
}
});
也不要忘记将代码保留在$(文档)中。 用于使用MVC模式恢复数据,您可以从控制器返回JSON(例如)从控制器键入数据,因为在通过AJAX恢复它之后。
您必须使用:
return Json(vm, JsonRequestBehavior.AllowGet);
而不是:
return View("AddNewInfo", vm);
完成的代码将是:
[HttpPost]
public JsonResult myMethod1(ViewModel m)
{
var db = new DB();
ModelState.Clear();
var returnedVal = db.GetDesctiption(m.requestedVar).First();
m.ReturnedDescription = returnedVal.Description;
var vm = DataFactory.Refresh();
vm.ReturnedDescription = m.ReturnedDescription;
return Json(vm,JsonRequestBehavior.AllowGet);
}
关心您使用此代码的方法。应该是您通过AJAX调用请求数据的哪一个。
在旁边,我将在JSON类型中从Ajax呼叫发送数据:
data: JSON.stringify(dataToSend)
完成的代码将是(如果您通过JSON类型发送数据,则将通过字符串类型恢复):
<script>
var GlobalVar1=0;
$("#dropdownlist1").change(function getID() {
<some code>
GlobalVar1 = selectedValue;
alert(GlobalVar1);
$(document).ready(function () {
$.ajax({
url: "@Url.Action("myMethod1", "Home")",
type: 'POST',
async: false,
success: function (data) {
alert("Sending complete");
},
error: function (error) {
alert('error');
}
});
});
};