Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 未使用$.ajax调用aspx的代码隐藏函数_Javascript_Jquery_Asp.net_Ajax - Fatal编程技术网

Javascript 未使用$.ajax调用aspx的代码隐藏函数

Javascript 未使用$.ajax调用aspx的代码隐藏函数,javascript,jquery,asp.net,ajax,Javascript,Jquery,Asp.net,Ajax,我有一个网页表单IndexPage.aspx。此前端代码的脚本部分使用ajax调用调用代码隐藏函数。代码如下: $.ajax({ type: "POST", url: '<%=ResolveUrl("~//IndexPage.aspx//SaveXml")%>', data: JSON.stringify(logic), contentType

我有一个网页表单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);
                }                    


            });
未调用此代码隐藏函数。我在代码隐藏函数中设置的断点没有被命中。我已经尝试了几乎所有的解决方案,从堆栈溢出。请查看此代码中是否有错误。

已解决

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);
        }


    });
Web.config

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

谢谢朋友们

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

我做了两个改变

1) 在代码隐藏函数中添加了[System.Web.Services.WebMethod]

2) 更改了my=>数据:JSON.stringify(逻辑)。。。。。到..=>数据:“{logic:\''+'\''+'\'}”

参考此链接后,我做了第二个更改:
当只发送一个字符串时,您需要添加转义序列。

msg.d将永远不存在于错误响应中。在错误回调中检查调用返回的内容。或者,在浏览器的控制台和网络工具中查看响应状态和内容。这将为您指出正确的方向以找到错误。嗨,我检查了网络中的浏览器“响应体”。它显示错误:ArgumentException:未知web方法SaveXmlThis无法回答问题。一旦你有足够的代表(我想50,不是很多),你可以写评论,直到那时,不要写不是答案的答案:-)我检查了浏览器控制台。(我想这就是你想要检查的)。它正在显示意外的标记@。由于此原因或其他原因导致出现问题。请将url更改为var pageUrl=''url:pageUrl+“/SaveXml”,
数据:'{logic:\''+logic+'\'}'
…yuk。不需要像那样手工构建JSON。更健壮的是
data:JSON.stringify({“logic”:logic})
  [WebMethod]
    public static void SaveXml(string logic)         {
    }
      <system.web>
        <webServices>
        <protocols>
             <add name="HttpGet"/>
             <add name="HttpPost"/>
        </protocols>
    </webServices>