2012-12-03 17 views
10

Bazı verileri işlemek için bir harita eklentisi kullanıyorum. Veri DB'den ve bir json dosyasına geliyor - senaryo harika çalışıyor. Verileri bir json dosyası yapmak yerine php çıktısından doğrudan kullanmaya karar verdim. Bazı nedenlerden dolayı javaScript doğrudan php girişini kabul etmiyor. İşteJSON db/php 'den JavaScript'te nasıl kullanılır?

$.getJSON('_data/index/data.json', function(data){ ... 

ne denedim edilir: Ben burada

MVC

CodeIgniter kullanıyorum şu anda çalışır örnek kod

var dataMap = '<? print $mapData;?>'; 
     $.getJSON(dataMap, function(data){... 

* DÜZENLEME 2 *

Tabanlı cevaplarda - bu seçenek de işe yaramıyor. Burada

var dataMap = '<?php echo $mapData;?>'; 
     $.get(dataMap, function(data){... 

Ve

json veri

{"countries":{"AL":"1","GB":"1","RS":"1","BG":"6","CA":"3","AT":"2","CD":"1"}} 

DÜZENLEME

$ mapData

FOREACH LOOP 
$retdata['countries'][] = strtoupper($row->code); 
$retdata['num'][] = $row->num; 
ENDFOREACH LOOP 
$retdata['countries'] = array_combine($retdat['code'], $retdata['num']); 
$retdata = json_encode($retdata); 

olduğunu Ve sonra normal olarak bir dosyaya yazdırılır olduğunu. Bu modele giriyor, sonra denetleyiciye ve sonra da görünüme iletiyorum. Dize, dosyada ve görüntüye gönderilmekte olan $dataMap'da aynıdır.

+0

CI Controllers üzerinde Echo'yu dene: 'var dataMap = ' '; – peacemaker

+0

Bize' $ mapData' nedir? $ .getJSON, sunucuya bir ajax isteği için bir kısayoldur. yani json verisini döndüren bir şeye yol/url olmalıdır. – peacemaker

+0

print_r ($ mapData), yukarıdaki json verileriyle aynıdır. Echo kullanırken konsol jsonu bağlantıya ekler ve bir 403 (Forbidden) jquery.min.js yazdırır: 2 – Ando

cevap

3

JSON verilerinizi doğrudan bir javascript değişkenine (AJAX kullanmak yerine) ekleyecekseniz, getJSON numaralı çağrıya ihtiyacınız yoktur. Sadece nesneyi doğrudan bunun gibi yazın. PHP dize kapatan tırnak içine yankılandı olmadığını

var js_object = <?php echo $mapData; ?>; 
alert(js_object.countries.AL); 
alert(js_object.countries.GB); 

Not bu doğrudan edebi sonra JSON.parse()

+0

Lütfen EDIT 2 – Ando

+1

'a bakın. Sanırım yapmaya çalıştığınız şeyi takip etmiyorum. Sayfa kaynağını oluştururken JSON nesnesini bir javascript değişkenine enjekte ederseniz, herhangi bir "get" veya "getJSON" seçeneğine ihtiyacınız yoktur. Daha sonra bu nesneyi istediğiniz işlevde kullanabilirsiniz. Örneğin, nesnenin nasıl kullanılacağına dair güncelleme yanıtımı inceleyin. –

+0

Mike, teşekkürler. JS'den hiçbir şey bilmiyorum. :( – Ando

1

devamında üzerinden bir nesne haline ayrıştırılması gerekiyor değil, bir dize bir javascript nesnesi oluşturarak demektir güncellenmiş kodunuzdan, zaten json verileriniz olduğu için getJSON'u aramanıza gerek yok gibi görünüyor.

<? echo $mapData;?> numaralı telefonu alıp javascript kodunuzdaki bir değişkene atayın ve doğrudan kullanın.

+0

lütfen bkz. EDIT 2 – Ando

1

Sadece dataMap'i doğrudan JSON olarak kullanın. Verilen cevaplar işi rağmen

alert(dataMap.countries.AL); //output: 1 
1

, kodunuz bakımı daha kolaydır böylece farklı şekilde uygulamak isteyebilirsiniz.

Tüm api çağrılarınızı işleyen ve harita ile ilgili tüm işlevleri buraya yerleştiren bir denetleyiciniz olabilir.Denetleyiciniz maps aradı ve veritabanından getirir ve ülkeler ile json döndüren bir countries yöntemi oluşturmak ise

, sonra JS bunu yapabilirsiniz:

$.get('maps/countries', function(data){ 
    console.log(data.countries); 
    //outputs: {"AL":"1","GB":"1","RS":"1","BG":"6","CA":"3","AT":"2","CD":"1"} 
}; 

Daha

+0

bana biraz iyi görünüyor –

İlgili konular