0

返されたデータを反復処理しようとして、ajax から呼び出される WebMethod があります。返されるデータは「{ BusinessTypeID = 2 }」です。値2を取得する方法を見つけようとしていますか?

        //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

    }
4

3 に答える 3

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

デバッガーをスローすることもできます。アラートの上の行を調べて、トラバースされている値を確認します。

于 2012-10-23T19:32:39.477 に答える
0

C# から JSON 文字列を返すことをお勧めします。

public static **string** GetTerminalBusinessTypes(string terminalID)
...
var oSerializer = new System.Web.Script.Serialization.JavaScriptSerializer();
string sJSON = oSerializer.Serialize(results);
return sJSON;
于 2012-10-23T20:08:13.530 に答える
0

Web サービスが json 値を返すと、asp.net はオブジェクトをラップします。キーはdJSON 文字列で、値は JSON 文字列です。詳細については、このリンクを確認してください。

値の文字列を json オブジェクトに解析する必要があります。jQuery の使用 (v1.4.1 以降):

jQuery.parseJSON(targetValue);
于 2012-10-23T19:34:31.283 に答える