【问题标题】:Obtain key:value from returned JSON string从返回的 JSON 字符串中获取 key:value
【发布时间】:2018-01-13 23:41:24
【问题描述】:

我是 jQuery 新手,并试图根据下拉列表的选择从 SQL 数据库中获取数据。我已经管理了 AJAX 调用,它看起来好像数据返回是有效的 JSON 格式。但是,我不知道如何从 JSON 字符串中获取键值对之一。我已经尝试了通过搜索互联网找到的所有内容:

        $("#cmbFacilityName").change(function () {
            $("#hdnMinimumDaysInAdvance").val = ""

            //alert('Selected value: ' + $(this).val());
            if ($(this).val() != '') {

                var organizationKey = $('#hdnOrganizationKey').val();
                var facilitySpaceKey = $("#cmbFacilityName").val();
                //alert(facilitySpaceKey)

                GetMinimumDaysInAdvance(organizationKey, facilitySpaceKey)

            }


        });

函数 GetMinimumDaysInAdvance(organizationKey, facilitySpaceKey) { $.ajax({ 类型:“获取”, url: "/Facility/View/FacilityReservation.aspx/GetMinimumDaysInAdvance", 数据:{intOrganizationKey:organizationKey,intFacilitySpaceKey:facilitySpaceKey}, contentType: "应用程序/json; charset=utf-8", 数据类型:“json”, 成功:函数(响应){

                var obj = response.d;

                //object = JSON.parse(response);



                //var x = JSON.stringify(response);
               // console.log(x.property_actually_now_defined);

                //var obj = response
                //var minHours = obj["MinNbrOfHours"];

             //   var json = $.parseJSON(response);
                //$("#hdnMinimumDaysInAdvance").html(data.MinNbrOfHours);
                   // obj = JSON.parse(response);
                //var parsedJSON = $.parseJSON(response);

                alert('Field: ' + obj.MinNbrOfHours);

               // $("#hdnMinimumDaysInAdvance").val(response.d.MinNbrOfHours);

                //var minNbrOfHours = JSONobj.entity.entries.MinNbrOfHours;
                //alert('Returned value: ' + minNbrOfHours);
                //$("#hdnMinimumDaysInAdvance").text(msg.d)

            },
            error: function (msg) {
                alert("error:" + JSON.stringify(msg));
            }
        });
    }

我的代码隐藏中的方法:

<System.Web.Services.WebMethod()>
<ScriptMethod(UseHttpGet:=True, ResponseFormat:=ResponseFormat.Json)>
Public Shared Function GetMinimumDaysInAdvance(ByVal intOrganizationKey As Int32, ByVal intFacilitySpaceKey As Integer) As Object


    Dim FacilityRatesBE As New FacilityRatesBE
    Dim FacilityRatesDAL As New FacilityDAL

    FacilityRatesBE = FacilityRatesDAL.GetFacilityRatesByFacilityKey(intOrganizationKey, intFacilitySpaceKey)

    Return JsonConvert.SerializeObject(FacilityRatesBE.MinNbrOfHours)

End Function

感谢任何可以帮助我的人。我已经尝试了所有我能想到的选项。显然,我遗漏或不理解某些内容。

【问题讨论】:

  • 请多解释一下。另外,你试过 JSON.parse() 吗?
  • 是的。当我这样做时,我得到一个错误。我的研究表明错误是因为它已经被解析,因为数据类型:json 在 AJAX 调用中指定。
  • 其实这个语句:Return JsonConvert.SerializeObject(FacilityRatesBE.MinNbrOfHours)应该是:Return JsonConvert.SerializeObject(FacilityRatesBE)。我偶然发布的那个是另一种尝试。我实际上是在返回整个班级。
  • 所以让我重新表述这个问题,你得到一个有效的 JSON 并试图访问一些密钥,但不知何故,该密钥不存在于数据中。这是你要问的吗?
  • 这里是响应中返回的内容的 sn-p:{d: "{"FacilityRatesKey":282,"OrganizationKey":0,"Facil...t":"","NoAlcoholAgreement": "","LastUpdatedBy":""}"}

标签: jquery json ajax


【解决方案1】:

根据您的评论,您的 json 响应中“d”的值似乎是一个字符串,因此您应该能够将其解析为

var props = JSON.parse(response.d); 
console.log(props.MinNbrOfHours);

【讨论】:

  • 就是这样!太感谢了。我正在对 (response) 而不是 (response.d) 进行解析。
  • 嗨@Susan。如果这解决了您的问题,请考虑通过单击复选标记接受它。没有义务这样做,more info
猜你喜欢
  • 1970-01-01
  • 2014-06-07
  • 1970-01-01
  • 2013-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多