0

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 は正常に動作します。

4

1 に答える 1

2

相対URLの問題だと思います。

/次のように、ajaxリクエストURLの前にaを追加してみてください

$.post("/CheckPeople/checkDelete",
    {
        Extension: this.value
    },
    function (data) {
        alert(data);
    });
});

お役に立てれば。

于 2012-11-30T20:10:54.557 に答える