[英]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.