2013-05-13 3 views
2

У меня есть вызов JQuery Ajax WebMethod, как показано ниже:Возвращает значение из WebMethod, основываясь на условиях, предусмотренных в WebMethod

<script type="text/javascript"> 
    $(document).ready(function() { 
     $("#btnsubmit").click(function() { 

      var arr = new Array(); 
      arr.push($("#control1").val()); arr.push($("#control2").val()); arr.push($("#control13 option:selected").val()); arr.push($("#control4 option:selected").val()); arr.push($("#control15 option:selected").val()); 

      var requestedData = JSON.stringify(arr); 
      requestedData = "{'details':'" + requestedData + "'}"; 

      $.ajax({ 
       type: "POST", 
       contentType: "application/json; charset=utf-8", 
       url: "EmployeeDemotion.aspx/Save", 
       data: requestedData, 
       dataType: "json", 
       success: function (result) { 
        //check the value returned from the WebMethod and provide alerts accordingly 

       }, 

       error: function (result) { 
        alert("Error"); 
       } 

      }); 
     }); 

    }); 
</script> 

и, то WebMethod, как показано ниже:

[WebMethod(EnableSession = true)] 
    public static InsertDetails[] Save(string details) 
     { 

      DataTable dt = new DataTable(); DataTable dts = new DataTable(); 

      List<InsertDetails> data = new List<InsertDetails>(); 
      JavaScriptSerializer js = new JavaScriptSerializer(); 
      string[] Tags = js.Deserialize<string[]>(details); 
      object[] obj = new object[8]; 
      obj[0] = Tags[0].ToString(); obj[1] = Tags[1].ToString(); obj[2] = Tags[2].ToString(); obj[3] = Tags[3].ToString(); 
      obj[4] = Tags[4].ToString(); 


      int a = //say condition 1 
      int b = //say condition 2 
      if (a< b) 
      { 

      //insert into database and set a value which says the insertion has succeeded 

      } 
      else 
      { 
       //alert that data cannot be inserted 
      } 

      return data.ToArray(); 
     } 

сейчас Мне требуется значение любого возможного типа (логическое, массивное, строковое, целое или другое) для возврата в метод ajax, так что функция успеха в методе ajax предупреждает о статусе вставки (как прокомментировано в te snippet), т.е. значение должно быть возвращено вместе с последним утверждением «return data.ToArray();» к методу ajax. Мне не нужно возвращать данные элемента, значение, которое проверяет вставку, должно быть возвращено либо вместе с «данными», либо в любой другой форме.

ответ

4

не уверен, что вы хотите. Независимо от того, хотите ли вы вернуть данные и флаг в клиентскую функцию или просто флаг.

  • Случай 1: все, что вы хотите, чтобы вернуть сообщение о действии, которое состоялось в save

    просто изменить свой метод сохранения, как этот

    [WebMethod(EnableSession = true)] 
    public static string Save(string details) 
    { 
         string message =string.Empty; 
    
         /// rest of the usual code of yours 
         /// 
         if (a< b) 
         { 
         //rest of the code 
         message = "Insertion Successful"; 
         } 
         else 
         { 
         //rest of the code 
         message = "Error Occured"; 
         } 
    } 
    

    и в вашей стороне клиента внутри ajax success, просто сделайте это:

    success: function (result) { 
           alert(result.d); 
    } 
    
  • Случай 2: вы хотите отправить данные также в случае успешной вставки

    Сделайте обертку и добавьте данные и флаг к ней. Сериализуйте его и введите , затем отправьте его на клиентскую функцию. т.е.

    //wrapper class 
    public class ServiceResponse 
    { 
        public bool IsSuccess {get;set;} 
        public string Message {get;set;} 
    } 
    

    Теперь внутри save сделать это:

    [WebMethod(EnableSession = true)] 
    public static string Save(string details) 
    { 
         ServiceResponse serviceResponse =new ServiceResponse(); 
    
         /// rest of the usual code of yours 
         /// 
         if (a< b) 
         { 
         //rest of the code 
          serviceResponse.IsSuccess= true; 
          serviceResponse.Message = String.Join(",",data.ToArray()); 
         } 
         else 
         { 
         //rest of the code 
         serviceResponse.IsSuccess = false; 
         } 
    
        return new JavaScriptSerializer().Serialize(serviceResponse); 
    } 
    

    и использовать его внутри метода клиента, как:

    success: function (result) { 
          var jsonData = $.parseJSON(result.d); 
          if(jsonData.IsSuccess){ 
           alert('success'); 
           grid.data(jsonData.Message); 
          } 
          else{ 
           alert('failure'); 
          } 
        } 
    
+0

я требую как случай 1 и 2 ... .Спасибо Манишу .. –

Смежные вопросы