我目前正在开发一个ASP.NET Webforms网站,我遇到了一个小问题。现在正在寻找2个小时,我有一个截止日期,所以希望有人可以提供协助。
在我的.cs文件中,我有以下Webmethod
[WebMethod]
public static string IsJobEditable(int jobid)
{
try
{
string isEditable = "false";
JobsBLL jbl = new JobsBLL();
int jobStatusId = jbl.GetJobStatusId(jobid);
if(jobStatusId == Convert.ToInt32(ConstantsUtil.JobStatus.Waiting) || jobStatusId == Convert.ToInt32(ConstantsUtil.JobStatus.Edit))
{
isEditable = "true";
}
return isEditable;
}
catch (Exception ex)
{
throw ex;
}
}
在这种情况下,此函数将始终作为字符串返回TRUE。
在Aspx页面上,我有以下内容
$(function () {
$.ajax({
type: "POST",
url: "Coordination.aspx/IsJobEditable",
data: "{jobid:" + jobid + "}",
contentType: "application/json; charset=utf-8",
dataType: "text",
success: function (result) {
alert(result);
// This is written out in the alert {"d":"true"}
// I want this in a variable as a string
// so I can do a check on it before I do some other actions
// The format is not a String so i cannot split on it to
// retrieve the "true" part.
},
error: function (err, result) { alert(err); }
});
});
正如您在评论中看到的,我在Callback方法中获得的值对我来说是一种奇怪的格式。类型是未知的,我需要这个值才能继续我的整个方法围绕Javascript的一小部分。
所以任何人都可以指出我可以将结果变量/数据作为var或其他任何可以将其放入var(作为字符串)的方向访问。
答案 0 :(得分:5)
使用result.d获取字符串。
从ASP.NET调用.ajax时,请参阅此站点以获取有关.d问题的说明:http://encosia.com/2009/02/10/a-breaking-change-between-versions-of-aspnet-ajax/
答案 1 :(得分:2)
尝试提醒(result.d);
答案 2 :(得分:2)
答案 3 :(得分:1)
根据我发现的two articles,我认为你想要将“DataType”指定为json而不是文本(因为你期望返回一个内容类型的json)。这可能是你的问题,虽然我没有一个示例项目在我面前进行测试。您的结果也可能是result.d
,如同一篇文章所述。
答案 4 :(得分:1)
这解决了它:
$(function () {
$.ajax({
type: "POST",
url: "Coordination.aspx/IsJobEditable",
data: "{jobid:" + jobid + "}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (result) {
alert(result.d);
//I finally got the data string i wanted
var resultAsString = result.d;
},
error: function (err, result) { alert(err); }
});
});
所以做了两件事来解决这个问题。我不得不将dataType更改为“json”,并使用result.d来检索我的数据。
让我失望的是结果对象缺乏intellisens。但是.d(data)属性却解决了它。
感谢所有为此答案做出贡献的人。