【发布时间】:2012-12-12 18:08:36
【问题描述】:
我已经逐步检查了我的 WebServices 代码,以验证我实际上是在返回数据,但是当我检查 JSON 端的返回时,它总是显示“null”。
这是 WebService 代码的 sn-p。
更新:为了大大简化事情,我从 Web 服务返回一个简单的 List 而不是自定义对象,并且我还压缩了 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 的 cmets):
$.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。
【问题讨论】:
-
那么,使用 firebug 或 fiddler 之类的东西,你能知道服务器的确切响应是什么吗?
-
尝试 firebug - 页面刷新速度如此之快,我只看到“内部服务器错误”。
-
您的回复格式为 json(
ResponseFormat.Json)。但是您的服务期望 RequestFormat Xml 或 Json 是什么?或者它可能期望 url 中的参数为 GET 方法 -
"页面刷新太快了,我只看到“内部服务器错误。”啊?这是一个ajax调用,你是什么意思页面刷新?
-
这是动态下拉过程的一部分。用户从下拉列表中选择“客户”,然后触发此代码以按客户获取位置。当我选择客户(观看萤火虫)时,我可以看到控制台消息“内部服务器错误”大约 0.03 秒,然后消失。