C# 响应数据显示在jquery的错误部分

C# 响应数据显示在jquery的错误部分,c#,jquery,asp.net,ajax,json,C#,Jquery,Asp.net,Ajax,Json,我正在将一些数据从jquery.ajax发送到aspx,在那里进行解析并在响应时写入,但是这些数据出现在错误部分,我认为发生了一些错误,没有显示出来,但是正确的数据在错误部分返回。代码如下 JQUERY var json = "{'uname':'" + $("#uname").val() + "','pwd':'" + $("#pwd").val() + "'}"; alert(json); $.ajax({ type: "POST",

我正在将一些数据从jquery.ajax发送到aspx,在那里进行解析并在响应时写入,但是这些数据出现在错误部分,我认为发生了一些错误,没有显示出来,但是正确的数据在错误部分返回。代码如下

JQUERY

var json = "{'uname':'" + $("#uname").val() + "','pwd':'" + $("#pwd").val() + "'}";
        alert(json);
        $.ajax({
            type: "POST",
            url: "DataProcess.aspx?Save=1",
            data: json,
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            async: false,
            success: function (msg) {
                alert(msg);
            },
            error: function (msg) { alert("failed: " + msg.responseText); }
        });
DataProcess.aspx.cs

namespace Test
{
    public partial class DataProcess : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
                ProcessAjaxRequest();
        }
        private void ProcessAjaxRequest()
        {
            if (Request.ContentType.Contains("json") && Request.QueryString["Save"] != null)
                SaveMyData();
        }
        private void SaveMyData()
        {
            System.IO.StreamReader sr = new System.IO.StreamReader(Request.InputStream);
            string line = "";
            line = sr.ReadToEnd();
            JObject jo = JObject.Parse(line);
            Response.Write(line);
            Response.Write((string)jo["uname"]);
            Response.Write((string)jo["pwd"]);

        }
    }
}
所以我得到了错误部分的响应,什么是错误的

K我遇到了问题,上面的代码是正确的,现在我的另一个疑问是,我可以从同一个aspx.cs调用一个特定的非静态方法吗,我的意思是当我尝试类似于“DataProcess.aspx/Test?Save=1”的东西时。它给出了一个错误,表示不是web方法,我将方法声明为

[WebMethod]
public void Test(){
}
K伙计们,我以为问题已经解决了,刚才我注意到,如果我写一个字符串来响应像这样的response.write(“success”),它会出现在jquery错误块中,但是当我写像这样的“response.write(0);”时,它会出现在success块中。第一个也应该来,有人解释什么问题


谢谢

不确定确切的问题,但您的json看起来像一个字符串。应该是这样的

var json = {'uname':'" + $("#uname").val() + "','pwd':'" + $("#pwd").val() + "'};

我假设您已经了解了(即,用
WebMethod
关键字修饰的静态方法)。

关于后面的问题,不可能使用非静态(实例)方法作为页面方法。原因很简单-实例方法可以访问实例变量,包括控制树。如果没有视图状态,ASP.NET无法保证回发方案中的控件树状态正确。对于这样的需求,
UpdatePanel
是一种选择,因为它在ASP.NET控件模型中提供了AJAX。页面方法用于流线型通信,其中请求/响应数据是最低限度的,没有开销(即,您希望在客户端/服务器之间通信的唯一有意义的数据)。

您能粘贴一个“正确数据”的示例吗?当
async
设置为
false
时,为什么要使用AJAX调用?AJAX url=
url:“Default.aspx/Login?Save=1”,
page name=
DataProcess.aspx.cs
??尝试从JObject jo=JObject.Parse(第行)调试代码;因为我认为要么解析失败,要么jo[“uname”]要么为null,要么会给出一个超出预期的索引。由于错误,我在这里保留了错误的url,我现在更正了它,这也解决了问题,但我在上面底部添加了另一个问题,请回答。谢谢您的回复。:)你应该使用Web API来完成这项任务,而不是使用aspx作为假控制器。不,我的jason是正确的,并且输出。我还有其他疑问,请回答。当做