【问题标题】:AJAX POST to WEB Method not working for meAJAX POST 到 WEB 方法对我不起作用
【发布时间】:2017-08-06 21:10:42
【问题描述】:

我和网上的其他人一样编写代码,但我的 WebMethod 没有受到 post 操作的影响。我相信我的代码很好,但我会发布我的代码以防万一。 我在 WebMethod 中放置了一个断点,这就是我知道它没有被调用的方式。 任何帮助将不胜感激。

安盛

                var div = document.getElementById(this.id);
                var divid = div.getElementsByClassName("portlet-id");

                varSQL="UPDATE [ToDoTrack] SET [Status] = '" + this.id + "' WHERE [ID] = '" + divid[0].innerHTML + "'";

                var item = {};
                item.status = this.id;
                item.id = divid[0].innerHTML;
                var Data = '{varSQL: ' + varSQL + ' }'

                $.ajax({
                    type: "POST",
                    url: "ToDoTrack.aspx/UpdateDB",
                    data: Data,
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    success: function (response)
                    {
                        window.location.reload();
                    },
                    error: function (XMLHttpRequest, textStatus, errorThrown)
                    {
                        alert("Status: " + textStatus);
                        alert("Error: " + errorThrown);
                    }  
                });

代码背后

    [WebMethod]
    [ScriptMethod]
    public static void UpdateDB(string varSQL)
    {
        string connStr = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
        using (SqlConnection con = new SqlConnection(connStr))
        {
            using (SqlCommand cmd = new SqlCommand(varSQL))
            {
                cmd.CommandType = CommandType.Text;
                cmd.Connection = con;
                con.Open();
                cmd.ExecuteNonQuery();
                con.Close();
            }
        }
    }

【问题讨论】:

    标签: javascript post webmethod


    【解决方案1】:

    数据对象有问题,它是字符串而不是对象 不建议在客户端创建 SQL,除非是应用程序,否则这是一个安全漏洞

    //Problem is a string not object
    var Data = '{varSQL: ' + varSQL + ' }'
    
    
    //Solution below
    
    var Data = {'varSQL':  varSQL  };
    // Or this
    var Data = 'varSQL='+varSQL;
    

    【讨论】:

    • 从手机发帖请原谅拼写错误和语法错误。
    • 感谢 EDC,但即使 SQL 的字符串通过了,我也希望 WebMethod 至少会被调用,但事实并非如此。
    • 在安全方面,我认为这可能是个坏主意,但我只是想测试一下数据库是否正在更新
    • 是的,我也在测试这个
    • 检查请求是否在开发者工具的网络标签下发送。然后我们就可以调试服务端了
    【解决方案2】:

    代码似乎运行良好,但如果您将来遇到此问题,这些是我从互联网上获得的东西,您似乎需要 ajax post 才能使用 WebMethods:

    确保您在 AJAX 中的 URL 正确

    确保您的 json 格式正确

    设置<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true">,我的脚本管理器在我的site.master中

    设置 settings.AutoRedirectMode = RedirectMode.Off;在 App_Start>RouteConfig.cs 文件中

    【讨论】:

      猜你喜欢
      • 2012-05-31
      • 1970-01-01
      • 1970-01-01
      • 2013-08-14
      • 1970-01-01
      • 2019-09-17
      • 1970-01-01
      • 1970-01-01
      • 2013-09-04
      相关资源
      最近更新 更多