【问题标题】:$.Ajax POST, accessing return data$.Ajax POST,访问返回数据
【发布时间】:2010-11-30 14:40:16
【问题描述】:

我目前正在开发一个 ASP.NET Webforms 站点,但遇到了一个小问题。现在已经搜索了 2 个小时,我有一个截止日期,所以希望这里的人可以提供帮助。

在我的 .cs 文件中,我有以下 Web 方法

[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); }

           });
       });

正如您在 cmets 中看到的,我在 Callback 方法中返回的值对我来说是一种奇怪的格式。类型未知,我需要此值才能继续执行围绕 Javascript 的一小部分的整个方法。

所以任何人都可以指出我可以将结果变量/数据作为 var 或其他任何可以让我将其放入 var(作为字符串)的方向。

【问题讨论】:

    标签: c# jquery asp.net ajax callback


    【解决方案1】:

    使用 result.d 获取您的字符串。

    有关从 ASP.NET 调用 .ajax 时 .d 问题的说明,请参阅此站点:http://encosia.com/2009/02/10/a-breaking-change-between-versions-of-aspnet-ajax/

    【讨论】:

      【解决方案2】:

      尝试警报(result.d);

      【讨论】:

        【解决方案3】:

        您可以像这样轻松检索“真实”部分:

        alert(result.d);
        

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

        【讨论】:

          【解决方案4】:

          根据twoarticles 我发现,我认为您想将“DataType”指定为 json 而不是文本(因为您希望返回 json 的内容类型)。这可能是您的问题,尽管我面前没有要测试的示例项目。您的结果也可能是result.d,如这些文章中所述。

          【讨论】:

            【解决方案5】:

            这解决了它:

            $(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 检索数据。

            让我失望的是结果对象上缺乏智能感知器。但是 .d (数据)属性却解决了它。

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

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2016-05-16
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2015-08-06
              • 1970-01-01
              • 1970-01-01
              • 2021-05-15
              相关资源
              最近更新 更多