私はMVCを使ってVisual Studioでプロジェクトを進めています。私はbtnがクリックされ、データがコントローラに動的に投稿された後にdivをリロードしようとしています。私はAjax投稿を使用してJSON結果を返します。イベントなしでリロードdivが絶えず動きますMVC
<div id = "DelUser">
@using (Html.BeginForm(null, null, FormMethod.Post, new { id = "Dform" }))
{
<label> Select User(s) to Delete: </label>
@Html.ListBox("Users", ViewBag.Users as MultiSelectList,
new { @class = "chzn-select", @style = "width:250px; height:350 px" })
}
<button class="btn btn-primary dropdown-toggle" id="Button1" type="button" onclick="DeleteUsers()"> Delete Selected </button>
</div>
<script>
function DeleteUsers() {
var myList = []
$("#Users > option:selected").each(function() {
myList.push($(this).val());
});
jQuery.ajax({
type: 'post',
dataType: 'json',
contentType: "application/json; charset=utf-8",
url: 'DeleteU',
data: JSON.stringify(myList),
success: function (data) {
$('#msgbx2').html(data.msg);
//here I am trying to refresh the div after the post but it fires every second
$('#DelUser').html('/Home/DeleteUser');
},
failure: function (errMsg) {
$('#msgbx2').html(data.msg);
}
});
return false;
}
コントローラの名前はは、deleteuserであるとするJsonResultコントローラがDeleteUです:投稿用のコードは次のようになります。
私は選択したユーザーを削除した後にドロップダウンリストが更新されるようにしようとしています。このdivを動的に更新する別の方法がある場合、その情報も知っておくと良いでしょう。前もって感謝します。ここで
は、コントローラは、同様に、次のとおりです。
[HttpGet]
public ActionResult DeleteUser()
{
List<string> u = new List<string>();
object[] users = data.getDataFrmDB("Select username From `users`;");
if (users != null)
{
foreach (object[] user in users)
{
u.Add((string)user[0]);
}
}
ViewBag.Users = new MultiSelectList(u, "Username");
return View();
}
[HttpPost]
public JsonResult DeleteU(List<string> Users)
{
bool good = false;
if (Users != null)
{
foreach (string user in Users)
{
string ins = "DELETE FROM `xcal-server`.`users` WHERE username='"+user+"';";
good = data.insert_update_delete_DB(ins);
List<string> u = new List<string>();
object[] users = data.getDataFrmDB("Select username From `users`;");
if (users != null)
{
foreach (object[] usera in users)
{
u.Add((string)usera[0]);
}
}
ViewBag.Users = new MultiSelectList(u, "Username");
if (good == true)
{
ViewBag.error = "You have successfully deleted user";
}
else
{
ViewBag.error = "There was an issue removing user";
}
}
return Json(new { msg = "You have Successfully deleted Users " });
}
return Json(new { msg = "the passwords entered do not match" });
}
これは私が元々のコントローラに
あなたは、コントローラのメソッド –
を表示する必要があり、それはあなたが実際に何をしたいのですか?成功したコールバックのリストボックスから選択したオプションを削除したいだけですか? –
私はajaxを使って投稿し、複数の選択リストをajax投稿(もちろん動的)で更新できるようにしたいと思います。@StephenMuecke –