簡體   English   中英

解析要在AJAX成功調用中使用的JSON字符串

[英]Parse JSON string to use in AJAX success call

我有生成JSON字符串的代碼。 該代碼生成的示例字符串如下。 我已經通過JSON lint工具對其進行了驗證,並且可以完美驗證。

{"ShipToName" : "(    ) CARPINTERIA         CA", "ShipToAddress1" : "3785 SANTA CLAUS LANE", "ShipToAddress2" : "", "ShipToCity" : "CARPINTERIA", "ShipToState" : "CA", "ShipToZip" : "93013", "ShipVia" : "UPS", "Terms" : "01", "SalesRep" : "KV1" }

然后,我有了一些將解析該字符串的JQuery。 現在,我只是想提醒字符串的一部分,以確保代碼正確運行。 我嘗試了以下兩種方法都沒有成功:

嘗試1:警報“未定義”

function hidShipTo_IndexChanged(sender, args) {
                var strComboID = $find("<%=rcbCustomer.ClientID%>");
                var strValue = strComboID.get_value();
                var strShipToVal = $("#hidShipTo").val();
                var strData = "{ strSoldToSelected: '" + strValue + "', strShipToSelected: '" + strShipToVal + "' }";
                alert("yes");
                $.ajax({
                    type: "POST",
                    url: "/webservices/ProductServer.asmx/PopulateShipToDetails",
                    data: strData,
                    contentType: "application/json; character=utf-8",
                    dataType: "json",
                    success: function (msg) {
                        alert(msg.SalesRep);
                    },
                    failure: function (xhr, ajaxoptions, thrownError) {
                        alert("Error1:" + xhr.status);
                        alert("Error2:" + thrownError);
                    }
                });
            }

嘗試2:在JQuery庫對象內引發錯誤

function hidShipTo_IndexChanged(sender, args) {
                var strComboID = $find("<%=rcbCustomer.ClientID%>");
                var strValue = strComboID.get_value();
                var strShipToVal = $("#hidShipTo").val();
                var strData = "{ strSoldToSelected: '" + strValue + "', strShipToSelected: '" + strShipToVal + "' }";
                alert("yes");
                $.ajax({
                    type: "POST",
                    url: "/webservices/ProductServer.asmx/PopulateShipToDetails",
                    data: strData,
                    contentType: "application/json; character=utf-8",
                    dataType: "json",
                    success: function (msg) {
                        alert(msg.SalesRep);
                    },
                    failure: function (xhr, ajaxoptions, thrownError) {
                        alert("Error1:" + xhr.status);
                        alert("Error2:" + thrownError);
                    }
                });
            }

關於如何訪問JSON字符串中每個項目的任何想法?

謝謝!

由於您的代碼不會引發未定義的異常,因此我們可以推斷出“ msg”並非未定義。

使用調試器查看您的味精實際包含的內容:

alert(msg.SalesRep);
console.log(msg);

注意:contentType應該是'charset = utf-8',而不是'character = utf-8'。 您發送的字符串也不是有效的json。 應該使用雙引號而不是使用單引號。

因此,一旦我檢查了控制台日志,答案就非常簡單。 我添加了以下代碼行,就可以開始訪問JSON字符串中的所有內容:

var obj = $.parseJSON(msg.d);

這沒有任何意義:

var strData = "{ strSoldToSelected: '" + strValue + "', strShipToSelected: '" + strShipToVal + "' }";                

應該是

var strData = { strSoldToSelected: strValue, strShipToSelected: strShipToVal };

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM