使用$ .ajax不会调用aspx函数后面的代码

时间:2018-02-13 16:30:49

标签: javascript jquery asp.net ajax

我有一个网页表单IndexPage.aspx。这个前端代码的脚本部分是使用ajax调用调用代码隐藏函数。这是代码:

       $.ajax({
                type: "POST",
                url: '<%=ResolveUrl("~//IndexPage.aspx//SaveXml")%>',
                data: JSON.stringify(logic),
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                //async: true,
                //cache: false,
                success: function (msg) {
                    alert("AJAX received  : " + msg.d);
                },
                error: function (msg) {
                    alert("Failed  : " + msg.d);
                }                    


            });

运行代码后,显示“失败”警告框,返回值为“未定义”。

功能背后的代码是:

    public static string SaveXml(string logic)
    {

        return logic;
    }

此代码隐藏功能未被调用。我在代码隐藏功能中设置的断点没有被击中。我已经尝试了几乎所有堆栈溢出的解决方案。请查看此代码中是否有任何错误。

2 个答案:

答案 0 :(得分:0)

谢谢朋友们,

问题已解决。检查 浏览器控制台和网络 帮助我解决了很多错误。

我做了两次更改

1)将[System.Web.Services.WebMethod]添加到代码隐藏功能

2)改变了我的=&gt; 数据:JSON.stringify(logic)..... to .... =&gt;数据:&#39; {逻辑:\&#39;&#39; +逻辑+&#39; \&#39;}&#39;

我在参考此链接后做了第二次更改:"Invalid JSON primitive" in Ajax processing 在发送一个字符串时,您需要添加转义序列。

答案 1 :(得分:-1)

解决

Ajax电话:

 $.ajax({
        type: "POST",
        url: '<%=Page.ResolveUrl("~/WebForm1.aspx/SaveXml")%>',
        data: JSON.stringify({ "logic": "logic value" }),
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        //async: true,
        //cache: false,
        success: function (msg) {
            alert("AJAX received  : " + msg.d);
        },
        error: function (msg) {
            alert("Failed  : " + msg.d);
        }


    });

网络方法

  [WebMethod]
    public static void SaveXml(string logic)         {
    }

的Web.config

      <system.web>
        <webServices>
        <protocols>
             <add name="HttpGet"/>
             <add name="HttpPost"/>
        </protocols>
    </webServices>