2012-10-23 230 views
0

我有一个从ajax调用的WebMethod,试图遍历返回的数据。正在返回的数据是“{BusinessTypeID = 2}”。我试图找出如何得到值2?迭代通过JSOn结果

 //Function called from ajax 
[System.Web.Services.WebMethod] 
public static string[] GetTerminalBusinessTypes(string terminalID) 
{ 
    DataClassesDataContext db = new DataClassesDataContext(); 
    List<string> results = new List<string>(); 

    try 
    { 

     var terminalBusinessTypes = (from bt in db.BusinessTypes 
            join obt in db.OxygenateBlenderBusinessTypes on bt.BusinessTypeID equals obt.BusinessTypeID 
            where obt.OxygenateBlenderID == Convert.ToInt32(terminalID) 
            select new 
            { 
             bt.BusinessTypeID 
            }).ToList(); 


     for (int i = 0; i < terminalBusinessTypes.Count(); i++) 
     { 
      results.Add(terminalBusinessTypes[i].ToString()); 
     } 

    } 
    catch (Exception ex) 
    { 

    } 

    return results.ToArray(); 
} 

Ajax的功能:

  function PopulateTerminalBusinessTypes(terminalID) { 

     $.ajax({ 
      type: "POST", 
      url: "OxygenateBlenderCertificationApplication.aspx/GetTerminalBusinessTypes", 
      data: "{'terminalID':" + terminalID + "}", 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      success: function (data) { 

       var targetValue = data.d; 

       var items = $('#cblTerminalBusinessType input:checkbox'); 



            $.each(targetValue, function (key, targetValue) { 
             alert(data[index].BusinessTypeID); 
            }); 
        } 
     })//end ajax 

    } 
+0

确定返回的数据是不是“{BusinessTypeID:2} “?如果是这样,你可以把它作为targetValue.BusinessTypeID或targetValue ['BusinessTypeID'] –

+0

我已经试过,没有工作。也许这是我返回数据的方式?我正试图弄清楚现在.... – user1220099

回答

0

说实话,我不能看到你的 “指标” 的定义。

不应该警戒线读

$each(targetVale, function(key, item) { 
    // on second look, this wont work as you are converting toString() 
    alert(targetValue[key].BusinessTypeId) 
    // this should 
    alert(item) 
}); 

你也可以抛出一个调试器;在警报上方行并查看正在遍历的值。

0

当您的Web服务返回json值时,asp.net将包装在一个对象中,其中键为d,值为您的json字符串。有关更多信息,请查看this link

您必须将值字符串解析为json对象。使用jQuery(1.4.1或更高版本):

jQuery.parseJSON(targetValue); 
0

你可能要尝试返回从C#JSON字符串:

public static **string** GetTerminalBusinessTypes(string terminalID) 
... 
var oSerializer = new System.Web.Script.Serialization.JavaScriptSerializer(); 
string sJSON = oSerializer.Serialize(results); 
return sJSON;