jQuery AJAX附加到Json返回数据"d:null"
jQuery AJAX appending to Json return data "d:null"
嘿,当我使用AJAX POST方法调用我的webservice时,我从我的回调得到一个奇怪的返回。
webservice像这样发送JSON返回:
Dim ser As New System.Web.Script.Serialization.JavaScriptSerializer()
Dim strResponse As String = ser.Serialize(results)
Context.Response.Clear()
Context.Response.ContentType = "application/json"
Context.Response.AddHeader("content-length", strResponse.Length.ToString())
Context.Response.Write(strResponse)
HttpContext.Current.ApplicationInstance.CompleteRequest()
上面strResponse的值为:
"[{'"Column1'":'"0589S2F'"},{'"Column1'":'"53699FNS'"},{'"Column1'":'"C38VVFD'"},{'"Column1'":'"LFD55F'"},{'"Column1'":'"2ERfG'"},{'"Column1'":'"0079'"},{'"Column1'":'"2054'"},{'"Column1'":'"054FGW'"}]"
由于某些原因,我的ajax返回200OK,但仍然进入ERROR逻辑,错误消息为:
ERROR: "[{'"Column1'":'"0589S2F'"},{'"Column1'":'"53699FNS'"},{'"Column1'":'"C38VVFD'"},{'"Column1'":'"LFD55F'"},{'"Column1'":'"2ERfG'"},{'"Column1'":'"0079'"},{'"Column1'":'"2054'"},{'"Column1'":'"054FGW'"}]"{"d":null}
注意它是如何将{"d":null}附加到我的请求的末尾的…这是从哪里来的,因为我没有在strResponse中发送任何类似的东西?
我的ajax请求代码:var sqlQ = "SELECT TOP 50 LTRIM(RTRIM(REPLACE(OID, ' ', ''))) FROM vwPSDAT WHERE OID != ''";
$.ajax({
type: 'POST',
contentType: 'application/json; charset=utf-8',
dataType: 'json',
url: 'http://zzzz/Service1.asmx/theQ',
data: JSON.stringify({ qString: [sqlQ] }),
async: true,
cache: false,
success: function (data) {
var obj = jQuery.parseJSON(data);
console.log('done!');
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
console.log('ERROR: ' + XMLHttpRequest.responseText);
}
});
似乎我只需要在写入页面之前添加Context.Response.Flush()。
Context.Response.Clear();
Context.Response.ContentType = "application/json";
Context.Response.AddHeader("content-length", strResponse.Length.ToString());
Context.Response.Flush();
Context.Response.Write(strResponse);
HttpContext.Current.ApplicationInstance.CompleteRequest();
添加response.End()为我解决了问题:
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.ContentType = "application/json";
HttpContext.Current.Response.AddHeader("content-length", res.Length.ToString());
HttpContext.Current.Response.Write(res);
HttpContext.Current.Response.Flush();
HttpContext.Current.Response.End();
在做StealthRT seas的情况下,您得到了一些附加到您需要的数据的错误,您可以通过指定响应的长度和限制输出来摆脱它:
Context.Response.AddHeader("content-length", strResponse.Length.ToString());
相关文章:
- 数组在递归方法中设置为null
- 铬:“;未捕获的语法错误:意外的标记:"
- 字符串在将其传递给另一个活动Android JavaScript时读取Null
- 可以设置“;文件名"发生错误时显示的内联脚本标记的
- 无法获取属性'selectedIndex'的未定义引用或null引用
- JS表单提交"无法使用Chrome数据保护程序加载此页面.尝试重新加载页面.调试信息:POST CISmtuK
- Meteor方法在客户端返回null,在客户端运行的相同方法返回正确的值
- 检测电话窃听,即:<a href="电话:xxx">在UIWebview上
- 来自文本输入null的html javascript变量
- "无法获取/null”;当使用nodejs运行服务器时
- "类型错误:'null'不是对象(正在评估“a.nodeType')”;在phanto
- "访问控制允许原点不允许原点为null"使用jQuery调用web服务时出错
- 为什么"undefined为null或不是对象”;
- 如何解决错误“;错误:外部容器'null'找不到"来自Jssor Slider
- 为什么“"==在JavaScript中为[null]true
- Valums文件上传器给出一个“;访问控制允许原点不允许原点为null"错误
- 如何解决'Cannot read property 'appendChild'null"
- 添加“;b服务器端":数据表中的true给出错误TypeError:g为null
- "类型错误:this.options为null"在OpenLayers.Protocol.HTTP中
- 如何打印“"如果变量的值为null