0

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

查询

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

数据处理.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"]);

        }
    }
}

所以我得到了错误部分的响应,有什么问题?

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

[WebMethod]
public void Test(){
}

K伙计们,我以为问题已经消失了,刚才我观察到,如果我写一个字符串来响应像这样的Response.Write(“成功”),它会出现在jquery错误块中,但是当我写这样的东西时“ Response.Write(0);",它进入成功块。第一个应该也来了,有人解释一下是什么问题

谢谢

4

2 回答 2

0

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

var json = {'uname':'" + $("#uname").val() + "','pwd':'" + $("#pwd").val() + "'};
于 2013-01-15T09:13:35.763 回答
0

我假设您已经了解PageMethods(即用WebMethod关键字修饰的静态方法)。
关于您后面的问题,不可能将非静态(实例)方法用作页面方法。原因很简单——实例方法可以访问实例变量,包括控制树。如果没有视图状态,ASP.NET 无法保证回发方案中的正确控件树状态。对于这样的需求,UpdatePanel是要走的路——因为它在 ASP.NET 控件模型中提供了 AJAX。页面方法适用于流线型通信,其中请求/响应数据是极简的,没有开销(即您希望在客户端/服务器之间通信的唯一有意义的数据)。

于 2013-01-15T09:34:49.343 回答