2016-04-04 16 views
0

, ben yapmaya çalışacağım:

myString = JSON.stringify($('#calendar').fullcalendar('clientEvents')); 

başarısız. myString uyarmaya çalıştım ancak bir dizi [Object object], ... . görüyorum. Ancak, örneğin myArray[0].title'u uyarmaya çalışırsam, doğru şekilde döndürülür.

Nerede yanlış yapıyorum?

P.S. Amaç AJAX aracılığıyla bir dosyaya kaydetmek için bir dize elde etmektir.

+0

* "hem örnek başarısız" * Her iki örnek de aynı şeyi yapıyoruz. İkinci örneğin ilk satırında oluşturduğunuz dizi, ikinci satırdaki atama tarafından atılır. –

+0

Bu bir fazlalıktı, üzgünüm. – kitsune

+2

Şimdi, göstermediğiniz sorudaki bir şeye atıfta bulunuyorsunuz ('myArray'). Her durumda, sorunu gösteren bir [mcve] oluşturabilir misiniz? [Api docs] (http://fullcalendar.io/docs/event_data/clientEvents/), yöntemin bir dizi nesne döndürdüğünü önerir. JSON.stringify'ın "garip bir toJSON" tanımlamazsa bunları işlemesini beklerim. . –

cevap

3

Sonuçlarınız, dizideki nesnelerin fullCalendarclientEvents yönteminin doğrudan JSON'a dönüştürülemeyeceğini bildirir. http://fullcalendar.io sayfasında biraz farklı sonuçlar elde ediyorum (dairesel yapıyı dönüştürmeye çalışmakla ilgili bir hata alıyorum); Bunu kullanmakta olduğunuz FullCalendar sürümüyle veya tarayıcınızın ve madeninizin dairesel yapılarla nasıl uğraştığını gösteren farklılıklar olduğunu varsayalım. Her iki durumda da, görünüşe göre nesneler olduğu gibi kullanılamaz.

The goal is to obtain a string to save on a file via AJAX.

Sen başarıyla JSON dönüştürülebilir nesneleri almak için dizisinde map kullanarak istediğiniz özelliklere beyaz listeye ekleyerek (olanları veya kara listeye istemediğiniz) yapabilir.

İşte beyaz liste bir örnek start, end ve title özellikleri: İşte

var json = JSON.stringify($("#calendar").fullCalendar("clientEvents").map(function(e) { 
    return { 
     start: e.start, 
     end: e.end, 
     title: e.title 
    }; 
})); 

bir kara listeye source ve herhangi bir maddi _ ile başlayan:

var json = JSON.stringify($("#calendar").fullCalendar("clientEvents").map(function(e) { 
    var rv = {}; 
    Object.keys(e) 
     .filter(function(k) { 
      return k != "source" && !k.startsWith("_"); 
     }) 
     .forEach(function(k) { 
      rv[k] = e[k]; 
     }); 
    return rv; 
})); 

... benim için çalıştı siteleri İşte

olanların hem ES2015 sürümleri şunlardır:

Beyaz liste:

let json = JSON.stringify($("#calendar").fullCalendar("clientEvents").map(e => ({ 
    start: e.start, 
    end: e.end, 
    title: e.title 
}))); 

Blacklisting:

let json = JSON.stringify($("#calendar").fullCalendar("clientEvents").map(e => { 
    let rv = {}; 
    Object.keys(e) 
     .filter(k => k != "source" && !k.startsWith("_")) 
     .forEach(k => { 
      rv[k] = e[k]; 
     }); 
    return rv; 
})); 
+1

Bu benim sorunumu çözdü, çok teşekkür ederim! :) – kitsune