我正在从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);”,它成功阻止了。第一个也应该来,有人解释什么是问题
由于
答案 0 :(得分:0)
不确定确切的问题,但你的json看起来像一个字符串。它应该是这样的
var json = {'uname':'" + $("#uname").val() + "','pwd':'" + $("#pwd").val() + "'};
答案 1 :(得分:0)
我假设您已经了解了PageMethods(即使用WebMethod
关键字修饰的静态方法)。
关于你后来的问题,不可能将非静态(实例)方法用作页面方法。原因很简单 - 实例方法可以访问包括控制树在内的实例变量。如果没有视图状态,ASP.NET无法保证在回发方案中正确的控制树状态。对于这样的需求,UpdatePanel
是要走的路 - 因为它在ASP.NET控件模型中提供了AJAX。页面方法用于流线型通信,其中请求/响应数据是简约的,没有开销(即您希望在客户端/服务器之间进行通信的唯一有意义的数据)。