C# 按钮单击不触发jQuery(Ajax)函数来更新页面

C# 按钮单击不触发jQuery(Ajax)函数来更新页面,c#,html,asp.net-mvc,jquery,C#,Html,Asp.net Mvc,Jquery,我有一个显示学生信息的网站。我想在网站上添加一些文本字段,并在单击按钮时使用jQuery(Ajax)异步更新这些字段。我相信我已经准备好了所有的要求,但是数据仍然没有更新 我是不是遗漏了什么?单击按钮没有任何作用 这是我的密码- 控制器: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using Student.Models;

我有一个显示学生信息的网站。我想在网站上添加一些文本字段,并在单击按钮时使用jQuery(Ajax)异步更新这些字段。我相信我已经准备好了所有的要求,但是数据仍然没有更新

我是不是遗漏了什么?单击按钮没有任何作用

这是我的密码-

控制器:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Student.Models;    

namespace Student.Controllers
{
    public class StudentController : Controller
    {           
        public ActionResult Index()
        {
            return View("Student");
        }  

        [HttpPost()]    
        public ActionResult DisplayStudentName(string id)
        {
            StudentDataContext db = new StudentDataContext();
            var StudentName = (from p in db.vwStudent.Where(a => a.StudentId == id)
                             group p by p.StudentName into g
                             select g.Key).FirstOrDefault();

            ViewData["StudentName"] = StudentName;

            return View("Student");

        }

        [HttpPost()]
        public ActionResult DisplayStudentStatus(int? id, string flg)
        {
            AccountDataContext db = new AccountDataContext();
            var StudentStatus = (from p in db.vwStudent.Where(a => a.StudentId == id && a.LastFlag == flg)
                             group p by p.Status into g
                             select g.Key).FirstOrDefault();

            ViewData["StudentStatus "] = StudentStatus;

            return View("Student");

        }

    }
}
jQuery:

    $("#Button1").click(function() {
        var link = '<%= Url.Action("DisplayStudentName", "Student")';
        $.ajax({
            url: link,
            data: "{id: '<%= ViewContext.RouteData.Values["id"] %>'}",
            dataType: "html",
            success: Success,
            error: Fail
        });
    });

    $("#Button2").click(function() {
        var link = '<%= Url.Action("DisplayStudentStatus", "Student")';
        $.ajax({
            url: link,
            data: "{id: '<%= ViewContext.RouteData.Values["id"] %>' , 
                    flg: '<%= ViewContext.RouteData.Values["flg"] %>'}",
            dataType: "html",
            success: Success,
            error: Fail
        });
    });

function Success(){
alert("Success");
}

function Fail(){
alert("Fail");
}
$(“#按钮1”)。单击(函数(){

var link='需要在ur ajax参数中提及post

    $.ajax({
            url: link,
            type: 'post',
此外,您还提到json是ajax函数中的数据类型,但您的操作是返回text/html

进行这两项更改,如果不起作用,请检查fiddler,查看您从服务器得到的响应

如果你得到了一个有效的响应,那么检查你的成功函数,看看你做的事情是否正确

如果要在操作上支持get和post场景,请将操作上的属性更改为

    [AcceptVerbs(HttpVerbs.Get | HttpVerbs.Post)]

我发现您的代码有几个问题:

  • 不应将
    数据
    参数用单引号括起来
  • 您的成功和错误参数不应是字符串。它们应该是函数
  • 在ASP.NET MVC应用程序中不应硬编码url。在处理url时,应始终使用url帮助程序
因此:


你想在按钮的onClick触发时发生什么,对吗?我想你需要一个onClick属性。你检查过没有在某个地方出现Javascript错误吗。例如,使用Chrome你有没有查看控制台日志?@BobHorn the
$(“#Button1”).click
包含在单击按钮时运行脚本的处理程序。我根据您的建议更新了我的jQuery,但仍然没有发生任何事情,感觉我的jQuery在单击“显示学生姓名”时甚至没有被触发按钮。另外,我的成功和失败函数中应该有什么?如果我只是显示一条消息,可以吗?我已经更新了上面的代码。如果在单击回调中添加一个警报,会发生什么情况?您的视图中是否引用了jQuery?您在成功和失败函数中要做什么将完全取决于您试图实现的目标。您可以uld也将它们定义为匿名函数。尝试调试您的代码。使用诸如FireBug之类的javascript调试工具,这将非常有帮助。我看不到“成功”或“失败”警报。我在我的网站上引用了jQuery。师父:我会看看我是否可以在工作时获得下载FireBug的权限。我想在单击“显示学生姓名”按钮后,根据输入的学生Id显示学生姓名,学生状态也是如此。单击“Button1”和“Button2”功能不会解决这个问题吗?或者我需要在“成功”与“失败”"改为函数?
/Scripts/StudentDetails.js
不是jQuery。我真的建议您阅读一些关于jQuery的入门教程,因为您似乎缺少一些非常基本的概念:我将参考更正为:我参考的是谷歌版本的jQuery。我之前确实阅读过该文档。我了解基本知识,它是jQuery我不知道我的代码中缺少了什么。
    [AcceptVerbs(HttpVerbs.Get | HttpVerbs.Post)]
$("#Button1").click(function() {
    var link = '<%= Url.Action("DisplayStudentName", "Student")';
    $.ajax({
        url: link,
        data: { id: '<%= ViewContext.RouteData.Values["id"] %>' },
        success: Success,
        error: Fail
    });
});

$("#Button2").click(function() {

    var link = '<%= Url.Action("DisplayStudentStatus", "Student")';
    $.ajax({
        url: link,
        data: {
            id: '<%= ViewContext.RouteData.Values["id"] %>' , 
            flg: '<%= ViewContext.RouteData.Values["flg"] %>' 
        },
        success: Success,
        error: Fail
    });
});
function Success(data) {
    // ...
}

function Fail() {
    // ...
}