0

我正在开发一个用 ASP.Net MVC 3 构建的项目。

在索引页面中,我显示了数据并允许用户使用 jeditable(也使用 ajax 函数)和删除函数进行内联编辑。

在创建页面中,显然它允许用户输入新数据,但现在我需要添加一个功能,如果数据库中已经存在数据,则允许从创建页面本身删除。

在此处输入图像描述 如果扩展的文本框模糊上的数据已经存在(在我的情况下,如果扩展不可用),则显示确认框。

我为此功能使用了 ajax 功能,但没有工作,在花了几个小时之后,我能够找出导致问题的原因。

ajax 功能仅在索引页面上工作,而不是在其他页面上。我将创建页面重命名为索引并将原始索引重命名为其他内容,这次它工作得很好,但是 ajax 停止在原始索引页面上工作,该页面被重命名为其他内容。在 url 中,如果我将索引页面加载为“ http://localhost:1234/Controller/Index ”,页面加载正常,但 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 并评论了原始索引路由并重命名帖子并将创建路由到索引,则 ajax 工作正常。

4

1 回答 1

2

我认为这是一个相对的网址问题。

尝试/在 ajax 请求 url 前面添加一个,比如

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

希望这可以帮助。

于 2012-11-30T20:10:54.557 回答