2014-07-08 62 views
1

你好的開發夥伴們,返回從Web服務對象,以AJAX請求成功回調函數

我有一個SSN文本框是的onblur調用一個函數,它做一個Ajax請求的Web方法來決定是否僱員先前已僱用。

Web方法返回一個TermedEmployee對象成功回調,但我不確定如何解析對象。

$('#<%=FormView1.FindControl("SSNField").ClientID%>').blur(hideValue); 

hideValue = function (ev) { 
var $this = $(this); 

$this.data('value', $this.val()); 
$('#<%=FormView1.FindControl("hiddenSSN").ClientID%>').val($this.val()); 

    var data2Send = '{"SSN": ' + $this.val() + ' }'; 
    $.ajax({ 
     type: "POST", 
     url: "AuthforHire.aspx/EmployeeisRehire", 
     data: data2Send, 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function (result) { 

      var obj = JSON.stringify(result.d); 


      if (obj.IsTermed) { 
       $('#%=RadWindowRehire.ContentContainer.FindControl("TextBoxTermID").ClientID%>').val(arg.d);  
       var wndWidth = 900; 
       var wndHeight = 500; 
       var wnd = window.radopen(null, "RadWindowRehire"); 



      } 

     }, 
     error: function (xhr) { 
      alert('Form update failed. '); //error occurred 
     } 

    }); 

下面是我的WebMethod,這所以正常工作

[System.Web.Services.WebMethod] 
public static TermedEmployee EmployeeisRehire(string SSN) 
{ 
TermedEmployee termedEmp = new TermedEmployee(); 
// Db call to get necessary data. 

    termedEmp.Name = dr["name"]; 
    termedEmp.TermDate = Convert.ToDateTime(dr["TermDate"].ToString()); 
    ...... 
} 

我如何可以提取名稱,TermDate,起始日期,ReasonforTerm等來自對象返回給回調函數的縮小版本?

預先感謝您!

回答

2

在你的成功回調的第一行是:

var obj = JSON.stringify(result.d); 

這是試圖序列什麼ASP.Net將已經系列化你。 更改爲:

var obj = result.d; 

然後,你將有機會獲得obj.Nameobj.TermDate和所有名稱的其他屬性。

+0

我試過,但我得到一個未定義的值obj.Termdate然後彈出一個錯誤說「無效的字符」。任何想法可能是什麼? – Eric

+0

是的。我編輯了響應,不需要使用JSON.parse,因爲result.d已經包含了你的對象,而不是它的字符串表示。您可以在成功回調中插入斷點或調試器語句,並使用螢火蟲或Visual Studio檢查響應,如果這是您正在使用的。 – Dimitri

+0

這似乎已經完成了@Dimitri的絕招!一旦將其轉換爲obj,看起來像我有完全訪問!我無法感謝你的時間和耐心!上帝保佑! – Eric