我有以下脚本可以工作,但我不明白为什么当类型设置为json时它不起作用:
了Serverside:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
Response.Clear()
Response.ContentType = "text/plain" '//#### <- should't this be text/json? ###
Response.Write(getTabFrame())
Response.End()
End Sub
Function getTabFrame() As String
objStringBuilder = New StringBuilder()
objStringBuilder.Append("[")
objStringBuilder.Append("{""key"":1,""value"":""Default""},")
objStringBuilder.Append("{""key"":2,""value"":""Reports""},")
objStringBuilder.Append("{""key"":3,""value"":""Other""}")
objStringBuilder.Append("]")
Return objStringBuilder.ToString
End Function
客户机侧:
$.ajax({
url: 'serverside',
type: 'GET',
dataType: 'text', //#### <------------------------ shouldn't this be json? ###
error: function(xhr, status, error) {
alert('Error: ' + status + '\nError Text: ' + error + '\nResponse Text: ' + xhr.responseText);
},
success: function(results) {
var obj = jQuery.parseJSON(results);
var len = obj.length;
for(i=0; i<len; i++) {
$("#tabs").tabs("add","tabs.aspx?tab=" + obj[i].key, obj[i].value)
};
}
});
当我将这些值更改为json时,整个过程停止工作并返回“null”...
为什么?
答案 0 :(得分:2)
如果dataType
为json
,则您无需在parseJSON
上执行results
- 它已经是javascript对象文字。
答案 1 :(得分:1)
尝试在服务器端使用Response.ContentType = "application/json";
,在AJAX中使用
contentType: "application/json; charset=utf-8",
dataType: "json",
答案 2 :(得分:0)
我认为应该适合使用 •Response.ContentType =“text / html”;
XML验证并检查HTML,XHTML,SMIL,MathML等Web文档的标记有效性,以符合w3标准。
示例代码:(有错误)
protected void Page_Load(object sender,EventArgs e)
{
Response.Clear();
Response.ContentType =“text / json”; // ####&lt; - 这应该是'application / json'吗?
回复于(getTabFrame());
到Response.End();
}
私有字符串getTabFrame()
{
var objStringBuilder = new StringBuilder();
objStringBuilder.Append( “[”);
objStringBuilder.Append( “{\” 键\ “:1,\” 值\ “:\” 默认\ “},”);
objStringBuilder.Append(“{\”key \“:2,\”value \“:\”Reports \“},”);
objStringBuilder.Append( “{\” 键\ “:3,\” 值\ “:\” 其他\ “}”);
objStringBuilder.Append( “]”);
return objStringBuilder.ToString();
}
页面错误输出:
无法显示XML页面 无法使用样式表查看XML输入。请更正错误,然后单击“刷新”按钮,或稍后重试。
在文档的顶层无效。处理资源'http:// localhost:1713 / Default.aspx'时出错。第1行,位置......
[{ “键”:1, “值”: “默认”},{ “键”:2 “值”: “报告”},{ “键”:3 “值”: “其他” }] ^
示例代码:(无错误)
protected void Page_Load(object sender,EventArgs e)
{
Response.Clear();
Response.ContentType =“text / html”; // ####&lt; - 这不应该是text / html吗? ###
回复于(getTabFrame());
到Response.End();
}
私有字符串getTabFrame()
{
var objStringBuilder = new StringBuilder();
objStringBuilder.Append( “[”);
objStringBuilder.Append( “{\” 键\ “:1,\” 值\ “:\” 默认\ “},”);
objStringBuilder.Append(“{\”key \“:2,\”value \“:\”Reports \“},”);
objStringBuilder.Append( “{\” 键\ “:3,\” 值\ “:\” 其他\ “}”);
objStringBuilder.Append( “]”);
return objStringBuilder.ToString();
}
页面输出(无错误):
[{ “键”:1, “值”: “默认”},{ “键”:2 “值”: “报告”},{ “键”:3 “值”: “其他” }]