$ .Ajax POST,访问返回数据

时间:2010-11-30 14:40:17

标签: c# jquery asp.net ajax callback

我目前正在开发一个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(作为字符串)的方向访问。

5 个答案:

答案 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)

您可以轻松检索“真实”部分,如下所示:

alert(result.d);

对象包装在“d”json对象中的原因是安全性。您可以阅读它,例如here

答案 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)属性却解决了它。

感谢所有为此答案做出贡献的人。