【发布时间】:2014-04-23 19:41:20
【问题描述】:
你好;
当我从jQuery ajax 使用时,页面会冻结直到请求结束。
这是我的 JavaScript 代码:
function GetAboutContent(ID, from) {
var About = null;
if (from != true)
from = false;
$.ajax({
type: "POST",
url: "./ContentLoader.asmx/GetAboutContent",
contentType: "application/json; charset=utf-8",
dataType: "json",
data: JSON.stringify({ 'ID': ID, 'from': from }),
async: true,
success: function (msg) {
var Result = msg.d.Result;
if (Result == 'session') {
warning('Your session has expired, please login again!');
setTimeout(function () {
window.location.href = "Login.aspx";
}, 4000);
return;
}
if (Result == 'failed' || Result == false) {
About = false;
return;
}
About = JSON.parse(msg.d.About)[0];
}
});
return About;
}
这是我的WebService
[WebMethod(EnableSession = true)]
public object GetAboutContent(int ID, bool from = false)
{
try
{
if (HttpContext.Current.Session["MahdParent"] != null ||
HttpContext.Current.Session["MahdTeacher"] != null ||
from)
{
functions = new GlobalFunctions();
DataTable queryResult = new DataTable();
queryResult = functions.DoReaderTextCommand("SELECT Field FROM TT WHERE ID = " + ID);
if (queryResult.Rows.Count != 0)
return new { Result = true, About = JsonConvert.SerializeObject(queryResult.Rows[0].Table) };
else
return new { Result = false };
}
else
return new { Result = "session" };
}
catch (Exception ex)
{
return new { Result = "failed", Message = ex.Message };
}
}
我该如何解决这个问题? 请帮帮我
【问题讨论】:
-
你不能从异步函数返回结果
-
你的意思是我应该将
async设置为false -
不,我不是那个意思,在任何情况下你都不应该这样做,而是阅读上面发布的链接。
-
你不需要 JSON.stringify 你可以传入对象。如果你的数据类型不确定你在 About 中有什么,你也不应该需要 JSON.parse。
标签: javascript jquery asp.net ajax webmethod