【发布时间】:2013-01-15 08:55:03
【问题描述】:
我正在将一些数据从 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"]);
}
}
}
所以我得到了错误部分的响应,有什么问题?
我遇到了问题,上面的代码是正确的,现在我的另一个疑问是,我可以从同一个 aspx.cs 调用特定的非静态方法吗,我的意思是当我尝试类似“DataProcess.aspx/Test?Save =1”。它给出了错误说不是网络方法,我将方法声明为
[WebMethod]
public void Test(){
}
K 伙计们,我以为问题已经解决了,刚才我观察到,如果我写一个字符串来响应类似这样的 Response.Write("success"),它会出现在 jquery 错误块中,但是当我写一些东西时像这样的“Response.Write(0);”,它进入了成功块。第一个应该也来了,有人解释一下是什么问题
谢谢
【问题讨论】:
-
你能粘贴一个“正确数据”的例子吗?当
async设置为false时,为什么还要使用AJAX 调用? -
ajax url =
url: "Default.aspx/Login?Save=1",页面名称 =DataProcess.aspx.cs??? -
尝试从 JObject jo = JObject.Parse(line); 调试你的代码因为我认为要么解析失败,要么 jo["uname"] 要么为空,要么给出一个超出预期范围的索引。
-
错误地我在这里保留了错误的网址,我现在更正了它,这也解决了,但我在上面的底部添加了另一个问题,请回答。感谢您的回复。 :)
-
你应该使用 Web API 来完成这个任务,而不是使用 aspx 作为假控制器
标签: c# jquery asp.net ajax json