在我的gridview中有个模板列,里面是textbox  。  我要做的是鼠标移进去的时候能输入分数,鼠标移出来就能实现保存。但是这个鼠标移出来要去触发这个 一般处理程序,可没有触发,数据没有保存进数据库里面。我的一般处理程序和这个页面文件是在一个文件夹里面的。
下面是我的前台jquery的代码:
<script type="text/javascript">
       $(function () {
           var tr_num = "";
           var td_num = "";
           $(".txt_defen").css("text-align", "center");
           $(".txt_defen").css("margin", "5px 0px 5px 0px");
           $(".txt_defen").mouseenter(function () {
               temp = $(this).val();
               $(this).css("border", "1px solid black");
               $(this).css("color", "blue");
           });
           $("#gvData td").click(function () {
               tr_num = $("#gvData td").parent().parent().find("tr").index($(this).parent()[0]);    //获得行号  
               td_num = $("#gvData td").parent().find("td").index($(this)[0]);                    //获得列号
           });
           $(".txt_defen").mouseout(function () {
               $(this).css("border", "white");
               $(this).css("color", "black");
               $.ajax({
                   type: "post",
                   url: "Handler.ashx",
                   data: {
                       "defen": $(this).val(),
                       "no": $('#gvData tr').eq(tr_num).find("td:first").text()
                   },
                   success: function (data) {
                       //alert(data);
                       window.location.href = "批改作业.aspx";
                   },
                   error: function (err) {                   }
               });
           });           $(".txt_defen").focus(function () {
               $(this).css("border", "1px solid black");
               $(this).val("");
           });
       });
    </script>
下面是我的一般处理程序的代码:
<%@ WebHandler Language="C#" Class="Handler" %>using System;
using System.Web;
using System.Data.Sql;
using System.Data.SqlClient;public class Handler : IHttpHandler
{    public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "text/plain";
        string defen = context.Request["defen"].ToString();
        string no = context.Request["no"].ToString();
        string str = " Data Source=VCC-PC;Initial Catalog=jifangzuoyenet;Persist Security Info=True;User ID=sa;Password=123456";
        SqlConnection con = new SqlConnection(str);
        con.Open();
        string sql = "update zuoye set defen = '" + defen + "' where no = '" + no + "'";
        SqlCommand cmd = new SqlCommand(sql, con);
        cmd.ExecuteNonQuery();
        context.Response.Write("更新成功");
        con.Close();
    }    public bool IsReusable
    {
        get
        {
            return false;
        }
    }}

解决方案 »

  1.   

    贴出你的调试画面,你在 $(this).css("border", "white"); 这条语句上设置断点了吗?它执行了吗?或者先回答一个比较基础的问题,你会使用 vs 来调试 javascript 代码吗? 先要让人看到你会调试,让人知道你的开发技术是哪一个程度、学了哪些,才能比较准确地理解你的问题。
      

  2.   

    我还不会使用vs来调试avascript 代码,
    我学的还是 比较浅的,接触了没多久。
      

  3.   

    IE 按F12 里面有个脚本 然后在点击JS最左边 就有个点 然后点击上面启动调试就可以了。
      

  4.   


    我还不会使用vs来调试avascript 代码,
    我学的还是 比较浅的,接触了没多久。
      

  5.   

    我说一下哈
    你ajax内部和外部的 $(this)  不是同一个对象,你在内部$(this).val()应该会报错。
    我建议你把所有需要用到的$(this)的东西,在ajax外部,用一个变量保存起来,内部直接使用变量。
    而不要用$(this)这样的方式来获取val。在重申一下,ajax内部和外部的this指向的对象不是同一个。
      

  6.   


    您好,我刚接触这个没多久。
    我子啊ajax的外面有了这个  :       var mythis = $(this).val;然后ajax里面变成了这样,还是不行呀:         $.ajax({
                       type: "post",
                       url: "Handler.ashx",
                       data: {
                           "defen": mythis,
                           "no": $('#gvData tr').eq(tr_num).find("td:first").text()
                       },
                       success: function (data) {
                           //alert(data);
                           window.location.href = "批改作业.aspx";
                       },
                       error: function (err) {                   }
                   });
      

  7.   

    首先要分清楚,
    是鼠标事件没有触发,
    还是ajax提交没有执行,
    或是ajax提交了,没有返回预期的结果,
    或是返回了结果,而随后的操作没有正确执行
    把这搞清楚了,再查问题就简单了,
    不要一把胡子抓
      

  8.   

    另外,js调试,最好用浏览器的调试工具,不要用vs调试
      

  9.   

    看vs版本了
    2015的话,js调试断点位置可以看服务器端变量变化,比浏览器调试方便多了。
      

  10.   

    是这样的,鼠标移进去的事件执行了,移出来的事件中有ajax事件。然后ajax事件会传值给一般处理程序。现在就是鼠标移出来了。但是我不知道  ajax 有没有传去给 一般处理程序。因为我这一般处理程序要是执行的话,存进数据库里面应该是没有问题的。
      

  11.   

    是这样的,鼠标移进去的事件执行了,移出来的事件中有ajax事件。然后ajax事件会传值给一般处理程序。现在就是鼠标移出来了。但是我不知道  ajax 有没有传去给 一般处理程序。因为我这一般处理程序要是执行的话,存进数据库里面应该是没有问题的。
    可它就是没有存进数据库。
      

  12.   

    看vs版本了
    2015的话,js调试断点位置可以看服务器端变量变化,比浏览器调试方便多了。我现在用的是vs 2010
      

  13.   

    LZ你好,你可以在你的一般处理程序  context.Response.ContentType = "text/plain";  这个位置  增加一个端点,然后调试,点击执行,如果能跳转到这里,说明执行了一般处理程序,如果是数据没有改变,那么就是你一般处理程序的问题,如果没有跳转到这里,就检查一下你的js!
      

  14.   


    Google 的 Chrome 怎么调试 js ?
      

  15.   


    Google 的 Chrome 怎么调试 js ?
    基本上不用设置断点调试,用console.log('要输出的变量、对象等'),通过查看console来看结果就知道错误了
      

  16.   

    使用mouseover事件试一下
      

  17.   

    监测一下chrome的network即可知道你的ajax是否执行,包括处理结果
      

  18.   

    需要确定两个东西,1、你的ajax执行到没,有没直接进入到一般处理程序里,在一般处理程序上设置个断点,在Debug下进行调试,看到有没进入到一般处理程序,如果能进入到一般处理程序,说明你的ajax执行到了,只是一般处理程序中处理的方法有问题;2、如果都不能进入一般处理程序,说明你ajax有问题,看下是写法哪里出了问题,还是其他脚本影响到了它不能运行正常