حلقة من خلال JSON قائمة كائن
-
03-07-2019 - |
سؤال
وأنا عائد إلى قائمة <> من خدمة ويب بمثابة قائمة من الأشياء JSON. واني اسعى الى استخدام لحلقة لتكرار خلال قائمة والاستيلاء على القيم من الخصائص. هذه عينة من JSON العودة:
{"d":[{"__type":"FluentWeb.DTO.EmployeeOrder",
"EmployeeName":"Janet Leverling",
"EmployeeTitle":"Sales Representative",
"RequiredDate":"\/Date(839224800000)\/",
"OrderedProducts":null}]}
وهكذا أحاول لاستخراج محتويات باستخدام شيء من هذا القبيل:
function PrintResults(result) {
for (var i = 0; i < result.length; i++) {
alert(result.employeename);
}
وكيف ينبغي أن يتم هذا؟
المحلول
ونفس المشكلة اليوم، ساعد موضوعك لي حتى هنا يذهب حل؛)
alert(result.d[0].EmployeeTitle);
نصائح أخرى
كن حذرا، d
لائحة.
for (var i = 0; i < result.d.length; i++) {
alert(result.d[i].employeename);
}
وانها قريبة! جرب هذا:
for (var prop in result) {
if (result.hasOwnProperty(prop)) {
alert(result[prop]);
}
}
تحديث:
إذا النتيجة الخاص بك هو حقا مجموعة من كائن واحد، ثم قد يكون لديك للقيام بذلك:
for (var prop in result[0]) {
if (result[0].hasOwnProperty(prop)) {
alert(result[0][prop]);
}
}
وأو إذا كنت تريد أن يتكرر خلال كل نتيجة في صفيف إذا كان هناك أكثر من ذلك، محاولة:
for (var i = 0; i < results.length; i++) {
for (var prop in result[i]) {
if (result[i].hasOwnProperty(prop)) {
alert(result[i][prop]);
}
}
}
وهنا هو:
success:
function(data) {
$.each(data, function(i, item){
alert("Mine is " + i + "|" + item.title + "|" + item.key);
});
}
والنص عينة JSON:
{"title": "camp crowhouse",
"key": "agtnZW90YWdkZXYyMXIKCxIEUG9zdBgUDA"}
ومنذ كنت تستخدم مسج، قد تستخدم كذلك في كل طريقة ... أيضا، يبدو أن كل شيء هو قيمة "د" الملكية في هذه شبيبة كائن [الترقيم].
$.each(result.d,function(i) {
// In case there are several values in the array 'd'
$.each(this,function(j) {
// Apparently doesn't work...
alert(this.EmployeeName);
// What about this?
alert(result.d[i][j]['EmployeeName']);
// Or this?
alert(result.d[i][j].EmployeeName);
});
});
وهذا يجب أن تعمل. إذا لم يكن كذلك، ثم ربما يمكنك أن تعطينا مثالا أطول من JSON.
تعديل: إذا لا شيء من هذه الاشياء يعمل ثم أنا بدأت تعتقد أنه قد يكون هناك شيء خاطئ مع بناء جملة JSON الخاص بك.
var d = $.parseJSON(result.d);
for(var i =0;i<d.length;i++){
alert(d[i].EmployeeName);
}
وهذا سوف يعمل!
$(document).ready(function ()
{
$.ajax(
{
type: 'POST',
url: "/Home/MethodName",
success: function (data) {
//data is the string that the method returns in a json format, but in string
var jsonData = JSON.parse(data); //This converts the string to json
for (var i = 0; i < jsonData.length; i++) //The json object has lenght
{
var object = jsonData[i]; //You are in the current object
$('#olListId').append('<li class="someclass>' + object.Atributte + '</li>'); //now you access the property.
}
/* JSON EXAMPLE
[{ "Atributte": "value" },
{ "Atributte": "value" },
{ "Atributte": "value" }]
*/
}
});
});
والشيء الرئيسي عن هذا يستخدم خاصية بالضبط نفس سمة من الزوج قيمة المفتاح-JSON.
ولدي المكالمة التالية:
$('#select_box_id').change(function() {
var action = $('#my_form').attr('action');
$.get(action,{},function(response){
$.each(response.result,function(i) {
alert("key is: " + i + ", val is: " + response.result[i]);
});
}, 'json');
});
والهيكل يعود من نظرة الخادم مثل:
{"result":{"1":"waterskiing","2":"canoeing","18":"windsurfing"}}