2013-05-03 47 views
0

我想知道是否有人可以指出我正確的方向.....我剛剛開始使用jSON和c#,並且遵循一個教程(用一些黑客)來返回一些數據回到網頁。我現在擁有的是這個(縮寫)。使用json和數據

具有Web服務調用存儲過程的asp.net的解決方案:該解決方案

[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> 

的代碼工作正如我得到頁面上的描述(離子)列表。但是,我希望在返回的記錄集中包含一系列行,並最終希望能夠從客戶端動態過濾結果。

所以我的問題是 我開始了錯誤的腳即ie。我是否以正確的格式將數據返回到頁面?因爲所有其他jSon示例,說實話,看起來都不同於我的!如果我在錯誤的方面,有誰能給我一些建議,我應該採取什麼措施。

感謝您提供的任何建議!

克雷格

回答

0

設置dataType: "json"在你的Ajax選項告訴你期待來自服務器的JSON響應jQuery的。你只是從服務器(這是默認的)返回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> 
+0

感謝您的。 我已經刪除該行,但刪除response.d現在不返回任何結果。 – SxChoc 2013-05-03 14:56:20

+0

數據是作爲一組jSon數據實際返回還是隻返回一個字符串? – SxChoc 2013-05-03 15:22:02

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"); 
} 
+0

嗨,謝謝你,但我仍然沒有得到它! – SxChoc 2013-05-09 20:30:45