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

时间:2013-01-15 08:55:03

标签: c# jquery asp.net ajax json

我正在从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(“成功”),它会在jquery错误块中出现,但是当我写一些东西时像这样的“Response.Write(0);”,它成功阻止了。第一个也应该来,有人解释什么是问题

由于

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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