Saya memiliki JSON berikut dikembalikan dalam data yang disebut variabel.
INI ADALAH JSON YANG MENDAPATKAN ...
[
{"Id": 10004, "PageName": "club"},
{"Id": 10040, "PageName": "qaz"},
{"Id": 10059, "PageName": "jjjjjjj"}
]
dan saya mencoba untuk mengulang koleksi menggunakan $ .each tapi saya mengalami masalah di mana peringatan menunjukkan tidak terdefinisi. Saya telah mencoba banyak sintaks yang berbeda tetapi sepertinya tidak bisa memahaminya.
JQuery yang saya gunakan adalah
$.each(data, function(i, item) {
alert(item.PageName);
});
Adakah yang bisa mengarahkan saya ke arah yang benar?
EDIT Ini adalah kode yang saya gunakan untuk mengambil data
$.getJSON('/Cms/GetPages/123', null, function(data) {
fillSelect(data);
});
dan ini adalah fungsi yang dipanggil saat dipanggil kembali
function fillSelect(data) {
alert(data);
$.each(data, function(i, item) {
alert(item.PageName);
});
}
EDIT 2 Ini agak membingungkan saya, menurut dokumen itu harus berfungsi seperti yang saya miliki, tetapi tidak. Menurut fiddler tajuknya menunjukkan: -
Content-Type: application/json; charset=utf-8
dan JSON tepat di atas. Saya menggunakan chrome jika ini berbeda. Akan menguji di IE dan FF ....
EDIT 3
menggunakan $. dapatkan hasil
"[\r\n {\r\n \"Id\": 10041,\r\n \"PageName\": \"01234567890\",\r\n \"MetaId\": 1000,\r\n \"TemplateId\": 2\r\n },\r\n {\r\n \"Id\": 10001,\r\n \"PageName\": \"about\",\r\n \"MetaId\": 1000,\r\n \"TemplateId\": 1\r\n },\r\n {\r\n \"Id\": 10056,\r\n \"PageName\": \"fdgdfgdfg\",\r\n \"MetaId\": 1000,\r\n \"TemplateId\": 1\r\n },\r\n {\r\n \"Id\": 10052,\r\n \"PageName\": \"hjkhjk\",\r\n \"MetaId\": 1000,\r\n \"TemplateId\": 2\r\n },\r\n {\r\n \"Id\": 10059,\r\n \"PageName\": \"jjjjjjj\",\r\n \"MetaId\": 1000,\r\n \"TemplateId\": 1\r\n },\r\n {\r\n \"Id\": 10057,\r\n \"PageName\": \"qqqqq\",\r\n \"MetaId\": 1000,\r\n \"TemplateId\": 2\r\n },\r\n {\r\n \"Id\": 10054,\r\n \"PageName\": \"qwqw\",\r\n \"MetaId\": 1000,\r\n \"TemplateId\": 2\r\n }\r\n]"
Jawaban:
dua opsi ini berfungsi dengan baik, kecuali jika Anda memiliki sesuatu seperti:
EDIT:
coba dengan ini dan jelaskan apa hasilnya
UNTUK EDIT 3:
ini memperbaiki masalah, tetapi bukan gagasan untuk menggunakan "eval", Anda harus melihat bagaimana tanggapan di '/ Cms / GetPages / 123'.
sumber
eval(data)
$.get
menghasilkanSudahkah Anda mengonversi data dari string ke objek JavaScript?
Anda dapat melakukannya dengan
data = eval('(' + string_data + ')');
atau, yang lebih aman,data = JSON.parse(string_data);
tetapi nantinya hanya akan berfungsi di FF 3.5 atau jika Anda memasukkan json2.jsjQuery sejak 1.4.1 juga memiliki fungsi untuk itu
$.parseJSON()
,.Tetapi sebenarnya,
$.getJSON()
harus memberi Anda objek json yang sudah diurai, jadi Anda harus memeriksa semuanya dengan teliti, ada sedikit kesalahan yang terkubur di suatu tempat, seperti Anda mungkin lupa mengutip sesuatu di json, atau salah satu tanda kurung tidak ada.sumber
fillselect(eval(data));
eval
?data = eval('('+string_data+')');
. Juga, jQuery memiliki fungsi laindata = jQuery.parseJSON(string_data);
eval(data)
bekerja. Silakan lihat EDIT 2 sayagetJSON akan mengevaluasi data untuk JSON untuk Anda, asalkan tipe konten yang benar digunakan. Pastikan server mengembalikan data sebagai aplikasi / json.
sumber
Content-Type: application/json; charset=utf-8
sumber