ASP.Net MVC 3 でビルドされたプロジェクトに取り組んでいます。
インデックス ページにデータを表示し、ユーザーが jeditable (これも ajax 関数を使用) と削除関数を使用してインライン編集できるようにしました。
作成ページでは、ユーザーが新しいデータを入力できることは明らかですが、データがデータベースに既に存在する場合、作成ページ自体から削除できるようにする機能を追加する必要があります。
拡張機能のテキストボックスぼかしにデータが既に存在する場合 (私の場合は拡張機能が利用できない場合) に確認ボックスを表示します。
この機能に ajax 関数を使用していましたが、機能していませんでした。何時間も費やした後、問題の原因を突き止めることができました。
ajax 関数は、他のページではなく、インデックス ページでのみ機能していました。Createページの名前をIndexに変更し、元のIndexを別の名前に変更しましたが、今回はうまくいきましたが、別の名前に変更された元のIndexページでajaxが機能しなくなりました。インデックスページを「http://localhost:1234/Controller/Index」としてロードすると、URL でページは正常にロードされますが、ajax 関数は機能しません。
簡単な方法で: Ajax 関数は以下で動作します
- ローカルホスト:1234/コントローラー
Ajax 関数が動作しない
- ローカルホスト:1234/コントローラー/作成
- ローカルホスト:1234/コントローラー/ViewPage1
- ローカルホスト:1234/コントローラー/インデックス
誰かがなぜこのように振る舞うかを説明できれば、これに対する解決策と、修正できる場合の代替解決策を教えてください。
ありがとう
Javascript コード
$('#Extension').blur(function () {
$.post("CheckPeople/checkDelete",
{
Extension: this.value
},
function (data) {
alert(data);
});
});
コントローラ: VB コード
//GET: /People/
Function Index() As ViewResult
ViewBag.CurrentPage = "People"
Return View(db.Peoples.ToList())
End Function
//GET: /People/Create
Function Create() As ViewResult
Return View()
End Function
//POST: /People/Create
<HttpPost()>
Function Create(ByVal people As People) As ActionResult
If ModelState.IsValid Then
db.Peoples.Add(people)
db.SaveChanges()
Return RedirectToAction("Index")
End If
Return View(people)
End Function
Public Function checkDelete(ByVal Extension As String) As JsonResult
Dim result As String = "I got you "
Return Json(result, JsonRequestBehavior.AllowGet)
End Function
コメントありがとうございます。コードを追加しました。簡単です。
Create.vbhtml の名前を Index.vbhtml に変更し、元の Index ルーティングにコメントを付けて、両方の投稿の名前を変更し、Create ルーティングを Index に取得すると、ajax は正常に動作します。