Jquery ASP.NET AJAX返回JSON但未被识别为JSON
我有这个功能,可以让我返回一个经理列表Jquery ASP.NET AJAX返回JSON但未被识别为JSON,jquery,ajax,asp.net-3.5,Jquery,Ajax,Asp.net 3.5,我有这个功能,可以让我返回一个经理列表 function getManagers() { var jqxhr = $.ajax({ type: 'POST', contentType: "application/json; charset=utf-8", url: '/webservice.asmx/GetManagers', dataTy
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() {
});
}
调用该方法时,我收到一个200 OK的响应,该响应包含我想要的JSON。我遇到的问题是,该响应未被识别为JSON
我已经试过了
- 如上所示,将数据类型添加到ajax调用中
- 从响应末尾删除this.Context.Response.flush,这就纠正了我在发送标题后调整标题时遇到的错误
- 向方法添加响应格式
- 向上下文添加响应.ContentType 这些都未能让我获得JSON所需的识别。任何帮助都将不胜感激
[{"Description":"data","Code":"data","reference":"data"}]{"d":null}
我不确定d null对象是什么请尝试解析它,正如我在下面所示,它对我有效:
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>';
}
for(变量i=0;i
尝试解析它,如我在下面所示,它对我很有用:
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>';
}
for(变量i=0;i
在success函数中,返回对象是“data”
为了访问json数据,您需要通过“data.d”访问它
我不禁注意到,您的web服务确实返回void,这可能也是没有响应的原因???在success函数中,返回对象是“data”
为了访问json数据,您需要通过“data.d”访问它
我禁不住注意到您的web服务确实返回void,这可能也是没有响应的原因???通过从ajax请求中删除contentType并向web配置中添加设置解决了问题,如本文所述
感谢您的帮助。1 ups所有方面:)通过从ajax请求中删除contentType并向web配置中添加设置(如本文所述),解决了此问题
感谢您的帮助。1 ups all arround:)为了从服务访问json对象,例如类为“Dog”的对象,方法返回类型应为“Dog”。不要使用response.write-in服务。然后,您可以使用“data.d”访问成功消息中的数据
希望这有帮助 为了从服务访问json对象,例如类为“Dog”的对象,方法返回类型应该是“Dog”。不要使用response.write-in服务。然后,您可以使用“data.d”访问成功消息中的数据 希望这有帮助 这对我很有用:
[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);
}
这对我很有用:
[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);
}
为什么不使用WCF(带REST)和JSON响应。。。你自己改变一切真的很糟糕!您的成功数据是否包含JSON,您是否可以发布一个示例转储?:)@马可约翰森感谢你的回应,不,成功不会开火,错误会开火。我刚刚运行了一个小测试,错误也不包含数据。请使用fiddler之类的工具检查响应,看看您的代码中出现了什么错误。@Marcojohanesen我无法在此处发布数据,因为它包含一些敏感项,但我将发布格式为什么不使用WCF(带REST)和JSON响应。。。你自己改变一切真的很糟糕!您的成功数据是否包含JSON,您是否可以发布一个示例转储?:)@马可约翰森感谢你的回应,不,成功不会开火,错误会开火。我刚刚运行了一个小测试,错误也不包含数据。请使用fiddler之类的工具检查响应,看看代码中出现了什么错误。@Marcojohanesen我无法在此处发布数据,因为它包含一些敏感项,但我将发布format@dhavaishukla我认为我不需要将数据解析为JSON这应该是预期返回的数据类型,如果我在这里错了,请让我know@dhavaishukla我不认为我需要将数据解析为JSON,因为这应该是预期的返回数据类型,如果我在这里出错,请告诉我我正在作为循环中的数据访问数据对象,服务返回void,因为它们正在写入响应,而不是返回标准对象。与其写入响应,不如返回整个对象。然后ajax方法会将其识别为json!我将数据对象作为循环中的数据访问,服务返回void,因为它们正在写入响应而不是返回标准对象。与其写入响应,不如返回整个对象。然后ajax方法会将其识别为json!经过3天的挠头和挣扎,你的解决方案对我来说是有效的。非常感谢。经过3天的挠头和挣扎,你的解决方案对我来说是有效的。非常感谢。干得好!非常感谢。干得好非常感谢。