2010-04-19 10 views
8

Gelişmekte olduğum bir web hizmeti için Gömülü kodumu (istemcinin sitesinde), etki alanımdaki derin komut dosyasından bir xml dosyası getirmesini istiyorum. Bu bir çapraz etki alanı isteği olduğundan, bu tür apis için fiili standart gözüktüğü için jsonp kullanmayı düşündüm. Ancak, başvurum için json yerine xml kullanmam benim için daha kolay olurdu. Şimdi, tabii ki xml'yi sunucuya json'a çevirebilirim ve daha sonra istemcinin site javascript'inde tekrar xml'ye dönüştürebilirdim, ama bu gereksiz yere gereksiz görünüyor. Gerçekten ihtiyacım olan şey ve xmlp çözümü, xml ile doldurma.JQP'nin jquery'de xml getirilmesi gibi varolan bir araç var mı?

Ben googling yorgun ama bunu yapan bir jquery plug-in bulamadı. Herkes basit bir çözüm biliyor mu?

cevap

4

json'un çalışmasının tek nedeni, sayfanızda bulunan javascript'in, x alanıyla ilgili sorunlar olmadan pencerede çalışabilmesidir. Yani javascript olarak kalmalı. Bununla birlikte, xml'yi küçültebilir, doğru şekilde kaçtığından ve json nesnesinde bir değer olarak gönderebildiğinden emin olabilirsiniz. Ya da bu çizgiler boyunca bir şeyler yapın.

+0

teşekkürler! Bu sadece umduğum basit bir çözüm gibi görünüyor. Henüz denemedim, ama kaçan kısım dışında herhangi bir zorluğu göremiyorum. – odedbd

5

XML dosyanız için başka bir çıktı biçimi yazmak zorunda kalmadan kaydetmek için Yahoo! Query Language (YQL) gibi bir şey kullanabilirsiniz.

örnek gibi YQL sorgusu URL'sini kullanacaktır JSONP-X yoluyla bu soru için XML akışını almak için için:

http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20xml%20where%20url%3D%27http%3A%2F%2Fstackoverflow.com%2Ffeeds%2Fquestion%2F2671143%27%20and%20itemPath%3D%27feed.entry%27&callback=my_jsonpx_handler

[Try this query in the YQL console]

verir aşağıdaki gibi bir sonuç; etkin bir XML JSON callback'inde sarılmış:

my_jsonpx_handler({"query":…,"results":["<entry xmlns=\"http://www.w3.org/2005/Atom\">\n <id>http://stackoverflow.com/questions/2671143/is-there-an-existing-tool-for-jsonp-like-fetching-of-xml-in-jquery<\/id>\n <re:rank xmlns:re=\"http://purl.org/atompub/rank/1.0\" scheme=\"http://stackoverflow.com\">0<\/re:rank>…"]});

sonra sırayla önbelleğe alma (sunucunuzda XML dosyasına konuşacak verilerinin, hız için YQL URL'sini sorgulamak olabilir Sizin widget'ları vb. eklenen güzellikler gibi).

+0

Çok faydalı, ilgimi çekeceğiniz için teşekkür ederiz. – gnarf

+0

Detaylı ve yardımsever öneriniz için teşekkürler. Alex'in önerisi biraz daha basit görünüyor, ki bu da çok hoşuma gidiyor. – odedbd

1

jQuery 1.5 sürümünde, bir yardımcı program yöntemi vardır; bu, jsonp'u XML'ye yüklemek için kullanmak üzere hayatımı kurtardı.

var xml = "<rss version='2.0'><channel><title>RSS Title</title></channel></rss>", 
xmlDoc = $.parseXML(xml), 
$xml = $(xmlDoc), 
$title = $xml.find("title"); 

http://api.jquery.com/jQuery.parseXML/

+0

Teşekkürler, sonuçta JSON kullanarak bitirdim, ama cevabın başkaları için en yararlı olduğunu kanıtlayabilirim. – odedbd

+0

XML yanıtını bir JSONP "paketinde" doğru sarmak zorunda kaldınız mı? –

+0

Evet, JSONP çağrısı için bir işlevde paketlenecek yanıta ihtiyacınız olacaktır, ancak bu, yanıtın XML içeriğinin nasıl ayrıştırılacağını gösterir. –