C# 未从Asp.net WebMethod显示AngularJSON Json数据
尝试通过一个工作示例学习Angularjs 原始示例在单击按钮时显示了一个简单的字符串。 我试图修改以显示从WebC方法返回的数据表 我的WebMethod看起来没问题——我可以进入它并返回一个JSON字符串 比如: 任何帮助都将不胜感激 谢谢C# 未从Asp.net WebMethod显示AngularJSON Json数据,c#,asp.net,angularjs,C#,Asp.net,Angularjs,尝试通过一个工作示例学习Angularjs 原始示例在单击按钮时显示了一个简单的字符串。 我试图修改以显示从WebC方法返回的数据表 我的WebMethod看起来没问题——我可以进入它并返回一个JSON字符串 比如: 任何帮助都将不胜感激 谢谢 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Test1.aspx.cs" Inherits="SampleAngularjs.Test1" %> <!DOCTYP
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Test1.aspx.cs" Inherits="SampleAngularjs.Test1" %>
<!DOCTYPE html>
<html lang="en">
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.5/angular.min.js"></script>
</head>
<body ng-app="codeapp">
<div ng-controller="CodeController" >
<button ng-click="myData.doClick(item, $event)">Send AJAX Request</button>
<br/>
<table>
<tr>
<th>Code</th>
<th>Desc</th>
</tr>
<tr ng-repeat="code in myData.codes">
<td>{{code.Code}}</td>
<td>{{code.Desc}}</td>
</tr>
</table>
</div>
<script>
angular.module("codeapp", [])
.controller("CodeController", function ($scope, $http) {
$scope.myData = {};
$scope.myData.codes = [];
$scope.myData.doClick = function (item, event) {
$http.post('Test1.aspx/GetAllCodes', { data: {} })
.success(function (data, status, headers, config) {
//$scope.myData.fromServer = data.d;
$scope.myData.codes = data;
})
.error(function (data, status, headers, config) {
$scope.status = status;
});
}
}).config(function ($httpProvider) {
$httpProvider.defaults.headers.post = {};
$httpProvider.defaults.headers.post["Content-Type"] = "application/json; charset=utf-8";
});
</script>
</body>
</html>
[WebMethod]
public static string GetAllCodes()
{
DataTable dt = new DataTable();
using (SqlConnection con = new SqlConnection(@"Data Source=SQL2012;Initial Catalog=XXX;Persist Security Info=True;Password=xxxx;User ID=xxxx"))
{
using (SqlCommand cmd = new SqlCommand( "SELECT Code=TheCode, [Desc]=TheDescription FROM Codes ", con))
{
con.Open();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dt);
System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
List<Dictionary<string, object>> rows = new List<Dictionary<string, object>>();
Dictionary<string, object> row;
foreach (DataRow dr in dt.Rows)
{
row = new Dictionary<string, object>();
foreach (DataColumn col in dt.Columns)
{
row.Add(col.ColumnName, dr[col]);
}
rows.Add(row);
}
serializer.MaxJsonLength = 50000000;
string sJson = serializer.Serialize(rows);
return (sJson);
}
我做了更多的测试
如果我手动创建一个类似于从db返回的Json列表的列表,我可以手动显示
生成的列表,但不是从服务器获取的Json生成的列表
这是截图
您可能遇到了一些CORS问题。您是否检查了浏览器控制台是否有任何错误 如果CORS是您的问题,您只需要通过在响应的标题中添加访问控制允许来源:*来向服务器添加CORS支持。 以下是有关如何实施的更多详细信息:
您好,谢谢,但我没有收到任何错误-我在进一步挖掘后修改了我的原始帖子-我可以在文本字段中显示服务器上的JSON数据,但不能在表中显示。如果我建立一个类似于服务器发送给我的列表,我可以在文本字段和表格中显示它。我感到困惑的是,数据的格式看起来是一样的
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Test1.aspx.cs" Inherits="SampleAngularjs.Test1" %>
<!DOCTYPE html>
<html lang="en">
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.5/angular.min.js"></script>
</head>
<body ng-app="codeapp">
<div ng-controller="CodeController" >
<button ng-click="myData.doClick(item, $event)">Send AJAX Request</button>
<br/>
<table>
<tr>
<th>Code</th>
<th>Desc</th>
</tr>
<tr ng-repeat="code in myData.codes">
<td>{{code.Code}}</td>
<td>{{code.Desc}}</td>
</tr>
</table>
</div>
<script>
angular.module("codeapp", [])
.controller("CodeController", function ($scope, $http) {
$scope.myData = {};
$scope.myData.codes = [];
$scope.myData.doClick = function (item, event) {
$http.post('Test1.aspx/GetAllCodes', { data: {} })
.success(function (data, status, headers, config) {
//$scope.myData.fromServer = data.d;
$scope.myData.codes = data;
})
.error(function (data, status, headers, config) {
$scope.status = status;
});
}
}).config(function ($httpProvider) {
$httpProvider.defaults.headers.post = {};
$httpProvider.defaults.headers.post["Content-Type"] = "application/json; charset=utf-8";
});
</script>
</body>
</html>
[WebMethod]
public static string GetAllCodes()
{
DataTable dt = new DataTable();
using (SqlConnection con = new SqlConnection(@"Data Source=SQL2012;Initial Catalog=XXX;Persist Security Info=True;Password=xxxx;User ID=xxxx"))
{
using (SqlCommand cmd = new SqlCommand( "SELECT Code=TheCode, [Desc]=TheDescription FROM Codes ", con))
{
con.Open();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dt);
System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
List<Dictionary<string, object>> rows = new List<Dictionary<string, object>>();
Dictionary<string, object> row;
foreach (DataRow dr in dt.Rows)
{
row = new Dictionary<string, object>();
foreach (DataColumn col in dt.Columns)
{
row.Add(col.ColumnName, dr[col]);
}
rows.Add(row);
}
serializer.MaxJsonLength = 50000000;
string sJson = serializer.Serialize(rows);
return (sJson);
}