我想知道是否有人能指出我正确的方向.....我刚刚开始使用jSON和c#并且已经按照教程(有几个黑客)将一些数据返回到网页。我现在拥有的是这个(缩写)。
一个asp.net解决方案,它有一个调用存储过程的Web服务:
[WebMethod]
public string ReadRegion()
{
DataSet myDS = getInterests();
StringBuilder sb = new StringBuilder();
DataTable myVenues = myDS.Tables[0];
if (myVenues.Rows.Count > 0)
{
foreach (DataRow myVenueRow in myVenues.Rows)
{
sb.Append(myVenueRow["descript"].ToString().TrimEnd() + "<br/>");
}
}
else
{
sb.Append("No Records Found");
}
return sb.ToString();
}
在这个解决方案中,我还有一个aspx页面,其中包含以下内容:
<script type = "text/javascript">
function ShowRegionsInfo() {
var pageUrl = '<%=ResolveUrl("~/WebService/wsJQueryDBCall.asmx")%>'
$.ajax({
type: "POST",
url: pageUrl + "/ReadRegion",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: OnSuccessCall,
error: OnErrorCall
});
}
function OnSuccessCall(response) {
$('#<%=lblOutput.ClientID%>').html(response.d);
}
function OnErrorCall(response) {
alert(response.status + " " + response.statusText);
}
</script>
代码工作正如我在页面上获得描述(离子)列表。但是我希望在返回的记录集中包含一系列行,最后我希望能够从客户端动态过滤结果。
所以我的问题是 我是从错误的脚开始的吗?我是否以正确的格式将数据返回到页面。因为所有其他jSon示例,说实话,看起来与我的不同!如果我走错了路,任何人都可以就我应该采取的步骤给出一些建议。
感谢您提供的任何建议!
克雷格
答案 0 :(得分:0)
在ajax选项中设置dataType: "json"
告诉jQuery您期望从服务器获得JSON响应。您只是从服务器返回html(这是默认设置),因此请删除该行。
此外,在您的OnSuccessCall()
方法中,您可以将response.d
更改为response
。
<script type = "text/javascript">
function ShowRegionsInfo() {
var pageUrl = '<%=ResolveUrl("~/WebService/wsJQueryDBCall.asmx")%>'
$.ajax({
type: "POST",
url: pageUrl + "/ReadRegion",
data: "{}",
contentType: "application/json; charset=utf-8",
success: OnSuccessCall,
error: OnErrorCall
});
}
function OnSuccessCall(response) {
$('#<%=lblOutput.ClientID%>').html(response);
}
function OnErrorCall(response) {
alert(response.status + " " + response.statusText);
}
</script>
答案 1 :(得分:0)
如果您从 aspx.cs 文件 调用特定方法
在 aspx 页面中,使用以下脚本
$('#<%= ddlItemCatogory.ClientID%>').change(function () {
var catId = this.value;
$('#<%= ddlItem.ClientID%>').get(0).options[0] = new Option("loading ... ", "0");
$("#phMainContent_ctl00_ddlItem").resetSS();
$.ajax({
type: "POST",
url: "handler/PopulateAjaxData.aspx/GetItem",
data: "{'catId':'" + catId.toString() + "'}",
contentType: "application/json; charset=utf-8",
dataType: 'json',
success: function (data) {
if (data.d.length > 0) {
$('#<%= ddlItem.ClientID%>').get(0).options.length = 0;
$('#<%= ddlItem.ClientID%>').get(0).options[0] = new Option("Select Item", "0");
$.each(data.d, function (index, item) {
$('#<%= ddlItem.ClientID%>').get(0).options[$('#<%= ddlItem.ClientID%>').get(0).options.length] = new Option(item.Display, item.Value);
});
}
else {
$('#<%= ddlItem.ClientID%>').get(0).options.length = 0;
$('#<%= ddlItem.ClientID%>').get(0).options[0] = new Option("No Item found", "0");
}
$("#phMainContent_ctl00_ddlItem").resetSS();
},
error: function () {
alert("Failed to load Item");
}
});
});
PopulateAjaxData.aspx.cs 中的代码
[WebMethod]
public static ArrayList GetItem(string catId)
{
ArrayList list = new ArrayList();
PopulateAjaxData item = new PopulateAjaxData();
List<DataModels.Items> items = item.loadItem(int.Parse(catId));
foreach (DataModels.Items i in items)
{
list.Add(new { Value = i.Id.ToString(), Display = i.Name });
}
return list;
}
如果您拨打 aspx.cs 文件,请使用以下代码...
在.aspx页面中使用以下代码
function addToCart() {
var vehicleId = $('#<%= VehicleId.ClientID%>').val();
var parameter = "vehicleId=" + vehicleId;
$.ajax({
type: "POST",
url: "handler/AddToCart.aspx?" + parameter,
success: function (msg) {
if (msg == "1") {
$('#message').html('Vehicle has been added to Cart.');
}
else {
$('#message').html('Vehicle can not be added at this moment.');
}
}
});
}
aspx.cs 加载事件使用以下代码
protected void Page_Load(object sender, EventArgs e)
{
string vehicleId = Request.Params["vehicleId"] ?? "";
string productId = Request.Params["productId"] ?? "";
string message = string.Empty;
int CartId = 0;
if (Request.Cookies["CartId"] == null)
{
if (CartId == 0)
{
DataModels.Cart cart = new DataModels.Cart();
cart.CreatedAt = DateTime.Now;
try
{
cart = Service.Create(cart);
if (cart.Id > 0)
{
HttpCookie objCookie = new HttpCookie("CartId");
objCookie.Value = cart.Id.ToString();
objCookie.Expires = DateTime.Now.AddDays(1);
Response.Cookies.Add(objCookie);
CartId = cart.Id;
}
}
catch (Exception ex)
{
message = ex.Message;
Response.Write("-1");
}
}
}
else
{
CartId = int.Parse(Request.Cookies["CartId"].Value);
}
DataModels.CartItem cv_new = new DataModels.CartItem();
if (CartId > 0 && !(string.IsNullOrEmpty(vehicleId)))
{
DataModels.CartItem cv = Service.ReadCartByVehicleId(CartId, int.Parse(vehicleId));
if (cv == null)
{
cv_new.Cart = Service.ReadCart(CartId);
cv_new.Vehicle = Service.ReadVehicle(int.Parse(vehicleId));
cv_new.Product = null;
cv_new = Service.Create(cv_new);
}
}
else if (CartId > 0 && !(string.IsNullOrEmpty(productId)))
{
DataModels.CartItem cv = Service.ReadCartByProductId(CartId, int.Parse(productId));
if (cv == null)
{
cv_new.Cart = Service.ReadCart(CartId);
cv_new.Vehicle = null;
cv_new.Product = Service.ReadProduct(int.Parse(productId));
cv_new = Service.Create(cv_new);
}
}
Response.Write("1");
}