Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.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
使用ASP.NET WebMethod返回整个页面的Jquery AJAX_Asp.net_Jquery_Ajax - Fatal编程技术网

使用ASP.NET WebMethod返回整个页面的Jquery AJAX

使用ASP.NET WebMethod返回整个页面的Jquery AJAX,asp.net,jquery,ajax,Asp.net,Jquery,Ajax,我正在做一些简单的测试,为使用jQueryAjax调用ASP.NETWebMethod的大型项目做准备。在我的示例中,我的WebMethod返回一个简单的字符串。但是,当我尝试使用JQuery调用它时,我会返回整个HTML页面内容,而不仅仅是字符串。我错过了什么 客户端: $(document).ready(function ready() { $("#MyButton").click(function clicked(e) { $.post("Defau

我正在做一些简单的测试,为使用jQueryAjax调用ASP.NETWebMethod的大型项目做准备。在我的示例中,我的WebMethod返回一个简单的字符串。但是,当我尝试使用JQuery调用它时,我会返回整个HTML页面内容,而不仅仅是字符串。我错过了什么

客户端:

$(document).ready(function ready() {
        $("#MyButton").click(function clicked(e) {
            $.post("Default.aspx/TestMethod",
                {name:"Bob"},
                function(msg) {
                    alert("Data Recieved: " + msg);
                },
                "html"
            );
        });
    });
服务器端:

using System;
using System.Web.Services;

namespace JqueryAjaxText
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        [WebMethod]
        public static string TestMethod(string name)
        {
            return "The value submitted was " + name;
        }
    }
}

尝试将最后一个参数html更改为文本。此参数指定要返回的数据类型。

查看此链接。我用他其他的一些帖子成功地调用了WCF服务。请务必查看相关文章:

通读这篇文章,但其实质是:

  $("#Result").click(function() {
    $.ajax({
      type: "POST",
      url: "Default.aspx/GetDate",
      data: "{}",
      contentType: "application/json; charset=utf-8",
      dataType: "json",
      success: function(msg) {
        $("#Result").text(msg.d);
      }
    });
});

我想我对JQuery的$.post命令中的类型参数感到困惑。在与一些人交谈之后,似乎调用WebMethod的返回类型必须是json。我试图使用html。有一次我把它改成json,然后一切正常。显然,用[WebMethod]修饰的方法只返回JSON,这就是我的问题所在


感谢各位的回复。

我遇到了完全相同的问题:WebMethod返回了整个HTML页面,而不是预期的数据。对我来说,解决方案来自于在~/App_Start/RouteConfig.cs内更改以下行:

settings.AutoRedirectMode = RedirectMode.Permanent;


问题是,永远不会调用该方法。AJAX调用只是接收整个页面,呈现方式与浏览器所看到的一样。你能尝试将html更改为文本吗?是的,这也让我感到惊讶。谢谢你的信息!确保您的web.config包含与此等效的内容,具体取决于您的版本:其中的关键部分是contentType:application/json行;charset=utf-8如果没有这一行,它将返回HTML。@Nathan我在大约一周的时间里把同一个问题和OP放在一起,你的回答真的帮了我很大的忙。我终于可以继续我的项目了。我真的很感激。非常感谢。
settings.AutoRedirectMode = RedirectMode.Off;