我有这个功能让我回到经理列表
function getManagers() {
var jqxhr = $.ajax({
type: 'POST',
contentType: "application/json; charset=utf-8",
url: '/webservice.asmx/GetManagers',
dataType: 'json'
}).success(function(data) {
var options = '<option selected="selected" disabled="disabled">Select Manager</option>';
for (var i = 0; i < data.length; i++) {
options += '<option value="' + data[i].PostRef + '">' + data[i].Description + '</option>';
}
$('#ReceivingCellManager').html(options);
}).error(function(data) {
$('.ErrorText').html('Manager load failed please refresh page with F5');
$("#errormessage").dialog('open');
}).complete(function() {
});
}
正如您所看到的,我正在使用JQuery并希望使用可用的管理器来填充下拉列表
我服务中的方法如下所示
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public void GetManagers()
{
using (var context = new ConcessionModel())
{
var rcm = Business.GetManager();
var serializer = new JavaScriptSerializer();
var response = rcm.Count() != 0
? serializer.Serialize(rcm)
: serializer.Serialize(new Error { Code = "500", Message = "Manager Retrieval Failed" });
this.Context.Response.Clear();
this.Context.Response.ContentType = "application/json";
this.Context.Response.Write(response);
}
}
当调用该方法时,我收到 200 OK 的响应,并且响应中包含JSON我希望我遇到的问题是响应未被识别为JSON。
我已经尝试
更新:JSON格式
{ “描述”: “数据”, “代码”: “数据”, “参考”: “数据”}
更新JSON响应 我在回复中看到一些奇怪的东西,我的回答如下
[{"Description":"data","Code":"data","reference":"data"}]{"d":null}
我不确定 d null 对象
是什么答案 0 :(得分:5)
为了从服务中访问json对象(如“Dog”类的对象),方法返回类型应为“Dog”。不要在服务中使用response.write。然后,您可以使用“data.d”从成功消息中访问数据。
希望这有帮助!
答案 1 :(得分:2)
通过从ajax请求中删除contentType并将设置添加到网络配置来解决此问题,如本文Request format is unrecognized for URL unexpectedly ending in中所述
感谢您的所有帮助全面提升:1)
答案 2 :(得分:1)
尝试解析它,如下所示,它适用于我:
var result = JSON.parse(data, function (key, value) {
var type;
if (value && typeof value === 'object') {
type = value.type;
if (typeof type === 'string' && typeof window[type] === 'function') {
return new (window[type])(value);
}
}
return value;
});
并将数据更改为结果:
for (var i = 0; i < result.length; i++) {
options += '<option value="' + result[i].PostRef + '">' + result[i].Description + '</option>';
}
答案 3 :(得分:1)
在success函数中,返回对象是'data'。
要访问json数据,您需要通过'data.d'访问它。
我无法帮助,但请注意您的网络服务确实返回无效,也许这也可能是为什么没有回应?
答案 4 :(得分:1)
这对我有用:
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public void HelloWorld() {
JavaScriptSerializer serializer = new JavaScriptSerializer();
string strResponse = serializer.Serialize("World"); ;
Context.Response.Clear();
Context.Response.ContentType = "application/json";
Context.Response.AddHeader("content-length", strResponse.Length.ToString());
Context.Response.Flush();
Context.Response.Write(strResponse);
}