WebServices コードをステップ実行して、実際にデータが返されていることを確認しましたが、JSON 側で戻り値を確認すると、常に「null」と表示されます。
WebService コードのスニペットを次に示します。
更新: 物事を大幅に簡素化するために、カスタム オブジェクトではなく Web サービスから単純なリストを返し、AJAX 呼び出しも要約しました。
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public List<string> GetLocations(string CustomerID)
{
List<string> LocationsList = new List<string>();
string sql = "select customer_site from demand_addresses where customer_identifier=" + CustomerID;
if (gDB.ExecuteRet(sql, "DB"))
{
DataTable dt = gDB.GetResultDataSet(0);
int i = 0;
if (dt.Rows.Count > 0)
{
foreach (DataRow rs in dt.Rows)
{
LocationsList.Add(rs["customer_site"].ToString());
}
}
else
{
LocationsList.Add("No Data Found.");
}
return LocationsList;
}
else
{
LocationsList.Add("No Data Found.");
return LocationsList;
}
そして、これがAJAX呼び出しです(以下のKamiのコメントを反映するために更新されました):
$.ajax({
type: "POST",
url: "/webservices/services.asmx/GetLocations",
data: "{ 'CustomerID': '" + selectedCustomer + "' }",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) { alert(data.d); },
error: function (status) {alert(status);}
});
"alert(data.d)" 行は "TypeError: data is null" になります。これを "alert(data)" に変更すると、単に "null" という警告ボックスが表示されます。
Web サービスがデータを正しく返しているのに、AJAX/JSON に戻らない理由を理解する助けが必要です。