Sencha Touch 错误您正在尝试解码 ASP.NET 中返回的无效 JSON 字符串 HTML 页面
Posted
技术标签:
【中文标题】Sencha Touch 错误您正在尝试解码 ASP.NET 中返回的无效 JSON 字符串 HTML 页面【英文标题】:Sencha Touch Error You're trying to decode an invalid JSON String HTML page returns in ASP.NET 【发布时间】:2012-10-10 13:34:21 【问题描述】:当我尝试将 JSON 字符串发布到客户端时,出现以下错误。
Uncaught Error: You're trying to decode an invalid JSON String:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>
</title></head>
<body>
<form method="post" action="WebForm1.aspx" id="form1">
<div class="aspNetHidden">
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwULLTE2MTY2ODcyMjlkZDU/UqTLS4JCyWg8lH2WKg+TKxlfMLv46f+TlE5HbZ5k" />
</div>
<div>
</div>
</form>
</body>
</html>
它返回所有 HTML 页面。我的服务器端代码是这样的:
var httpWebRequest = (HttpWebRequest)WebRequest.Create("http://localhost:59145/My%20Application.app/webapp/index.html");
httpWebRequest.ContentType = "application/json";
httpWebRequest.Method = "POST";
string json = " \"myresultlist\": [ \"uname\": \"1\",\"pass\": \"anne\" , \"uname\": \"2\", \"pass\": \"jack\" , \"uname\": \"3\", \"pass\": \"Tom\" ]";
httpWebRequest.ContentLength = json.Length;
using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
streamWriter.Write(json);
streamWriter.Flush();
streamWriter.Close();
有人知道吗?如何只向客户端发送 JSON 字符串?
【问题讨论】:
【参考方案1】:解决方法如下。
错误原因是服务器端post操作。
当我用这个块改变代码时,我得到了 json 字符串。
Response.Expires = 0;
Response.ContentType = "application/json";
Response.Write(" \"myresultlist\": [ \"uname\": \"1\",\"pass\": \"anne\" , \"uname\": \"2\", \"pass\": \"jack\" , \"uname\": \"3\", \"pass\": \"Tom\" ]");
Response.End();
【讨论】:
【参考方案2】:如果您的客户端正在执行POST
,则您的服务器无法返回POST
。不要将HTTP
方法设置为等于POST
。
看看这个服务器响应:
HTTP/1.1 200 OK
Date: Wed, 10 Oct 2012 19:58:46 GMT
Server: Apache/2.2.22 (Win64) php/5.4.3
Vary: Accept-Encoding,User-Agent
Content-Encoding: gzip
Keep-Alive: timeout=5, max=99
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: application/javascript; charset="iso-8859-1"
【讨论】:
以上是关于Sencha Touch 错误您正在尝试解码 ASP.NET 中返回的无效 JSON 字符串 HTML 页面的主要内容,如果未能解决你的问题,请参考以下文章