【问题标题】:AJAX Response Text Is Always EmptyAJAX 响应文本始终为空
【发布时间】:2016-03-27 14:21:46
【问题描述】:

我正在使用 asp.net Web 表单并尝试使用 AJAX 从 java 脚本函数调用 Web 服务方法,该函数返回一个带有车号和车号 ID 对的 JSON 数组 Web 方法驻留在 java 脚本功能页面的相同代码隐藏文件中 我使用调试器多次检查了 json 变量,并确保它包含一个有效的 JSON 数组 但是,当我在 FillLimoCars java 脚本函数中检查汽车对象时,我发现响应文本是一个空数组 我不确定为什么会发生这种情况,希望你们中的任何人都能够提供帮助

Java 脚本

            function testButton(carModelID) {
            $.ajax({
                type: "POST",
                url: baseURL + "WebPages/NewPages/ListCarRental.aspx/FillLimoCars",
                data: "{CarModelID:'" + carModelID + "'}",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                complete: FillLimoCar
                });
        }

        function FillLimoCar(cars)
        {
            var rdd_LimoCars = $find("<%=rdd_LimoCarNumber.ClientID %>");
            var comboItem = new Telerik.Web.UI.RadComboBoxItem();
            for(var i = 0; i < cars.length; i++)
            {
                ;
            }
        }

C#

    [WebMethod]
public static string FillLimoCars(int CarModelID)
{
    try
    {
        JavaScriptSerializer serializer = new JavaScriptSerializer();
        List<LimoFleet> limos = carsBLL.GetCarModelLimoFleet(CarModelID);
        List<object> objLimosList = new List<object>();
        foreach(var limo in limos)
        {
            var limoObj = new
            {
                CarID = limo.CarID,
                CarNumber = limo.CarNumber
            };
            objLimosList.Add(limoObj);
        }
        var json = serializer.Serialize(objLimosList);
        return json;
        //Context.Response.Write(objLimos.ToJson());
    }
    catch (Exception ex)
    {
        Tracer.Singleton.Log(ex);
        return null;
    }
}

【问题讨论】:

  • 您是否检查过您的 FillLimoCars 函数以验证它是否返回了一个开头的值?
  • @Sergio 是的,正如我上面提到的,它返回了一个有效的 JSON 数组

标签: javascript c# json ajax


【解决方案1】:

你必须使用成功属性。在success里面,你必须反序列化JSON对象。

$.ajax({
                type: "POST",
                url: baseURL +     "WebPages/NewPages/ListCarRental.aspx/FillLimoCars",
                data: "{CarModelID:'" + carModelID + "'}",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                "success": function (json) {
                      if (json.d != null) {
                              FillLimoCars(json.d);
                          }
                  });

【讨论】:

  • 我尝试使用成功属性仍然得到相同的结果,我不明白为什么它会有所作为
  • 尝试在浏览器中调试。记录输出 console.log(json.d) 并查看它返回的内容。
  • 已经完成了,它返回一个空数组 "{"d":"[]"}" @Pradeep
  • 问题出在您的服务器端。请确保 objLimosList 不为空。如果不为空,则使用 Newtonsoft.Json.JsonConvert 序列化对象。语法是 JsonConvert.SerializeObject(objLimosList)
  • 刚刚尝试使用 Newtonsoft 序列化程序得到了相同的结果,我认为问题不在于前面提到的对象是如何序列化的,我检查了对象是序列化程序就好了
猜你喜欢
  • 2011-09-17
  • 2018-12-18
  • 2013-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-23
  • 2021-12-07
  • 2013-10-20
相关资源
最近更新 更多