jquery的错误部分显示响应数据
本文关键字:响应 数据 显示 错误部 jquery | 更新日期: 2023-09-27 17:53:41
我正在从jquery发送一些数据。ajax到aspx,在那里解析和写响应,但数据是在错误部分,我认为一些错误正在发生,没有显示,但正确的数据是在错误部分得到返回。代码如下:
JQUERYvar 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);",它的成功块。第一个也应该来,有人解释一下是什么问题
谢谢
不确定确切的问题,但你的json看起来像一个字符串。应该是这样的
var json = {'uname':'" + $("#uname").val() + "','pwd':'" + $("#pwd").val() + "'};
我假设你已经弄清楚了PageMethods(即用WebMethod
关键字装饰的静态方法)。
关于你后来的问题,它的不可能使用非静态(实例)方法作为页面方法。原因很简单——实例方法可以访问包括控制树在内的实例变量。没有视图状态,ASP。NET不能保证在回发场景中具有正确的控件树状态。对于这样的需求,UpdatePanel
是可行的——因为它在ASP中提供了AJAX。. NET控制模型。页面方法是为流线型通信,其中请求/响应数据是极简的,没有开销(即唯一有意义的数据,你想在客户端/服务器之间进行通信)。