$ .Ajax POST, доступ к возвращаемым данным - PullRequest
2 голосов
/ 30 ноября 2010

В настоящее время я работаю над сайтом 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 ]

5 голосов
/ 30 ноября 2010

Используйте result.d для получения вашей строки.

См. Этот сайт для объяснения проблемы .d при вызове .ajax из ASP.NET: http://encosia.com/2009/02/10/a-breaking-change-between-versions-of-aspnet-ajax/

2 голосов
/ 30 ноября 2010

Вы можете легко получить «истинную» часть, как это:

alert(result.d);

Причиной, по которой объект обернут в объект "d" json, является безопасность. Вы можете прочитать об этом, например, здесь .

2 голосов
/ 30 ноября 2010

try alert (result.d);

1 голос
/ 30 ноября 2010

Это решило это:

$(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); }

       });
   });

Итак, для решения этой проблемы было сделано 2 вещи.Мне пришлось изменить dataType на «json», и я использовал result.d для извлечения моих данных.

Что меня оттолкнуло, так это отсутствие intellisens на объекте результата.Но свойство .d (data) все же решило это.

Спасибо всем, кто внес свой вклад в этот ответ.

1 голос
/ 30 ноября 2010

Согласно двум статьям Я обнаружил, что вы хотите указать "DataType" как json, а не как текст (поскольку вы ожидаете, что тип содержимого json будетвозвращается).Это может быть вашей проблемой, хотя передо мной нет примера проекта для тестирования.Ваш результат также, вероятно, result.d, как указано в тех же статьях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...