2010-04-19 28 views
8

Đối với dịch vụ web tôi đang phát triển, tôi muốn mã nhúng của mình (trên trang web của khách hàng) để tìm nạp tệp xml từ tập lệnh cắt xén của tôi nằm trên miền của tôi.Có công cụ hiện có nào cho jsonp như tìm nạp xml trong jquery không?

Vì đây là yêu cầu tên miền chéo, tôi đã tìm cách sử dụng jsonp vì nó có vẻ là tiêu chuẩn thực tế cho các apis như vậy. Tuy nhiên, đối với ứng dụng của tôi, tôi sẽ dễ dàng sử dụng xml thay vì json. Bây giờ, tôi có thể tất nhiên chuyển đổi xml của tôi để json trên máy chủ và sau đó trở lại một lần nữa để xml trong trang web của khách hàng javascript, nhưng điều đó có vẻ không cần thiết cồng kềnh. Những gì tôi thực sự cần là và giải pháp xmlp, xml với đệm.

Tôi mệt mỏi googling nhưng không thể tìm thấy một plugin jquery mà làm điều đó. Bất cứ ai cũng biết một giải pháp đơn giản?

Trả lời

4

Lý do duy nhất json hoạt động là vì javascript được bao gồm trên trang của bạn có thể chạy trong cửa sổ mà không có bất kỳ vấn đề nào về miền x. Vì vậy, nó phải duy trì javascript. Tuy nhiên, bạn chỉ có thể rút gọn xml, đảm bảo rằng nó đã thoát đúng cách và gửi nó như một giá trị trong một đối tượng json.

echo 'callback({data: "' + xml string + '"});'; 

Hoặc điều gì đó dọc theo các dòng đó.

+0

Cảm ơn! Điều này có vẻ như chỉ là loại giải pháp đơn giản mà tôi đã hy vọng. Tôi chưa thử nó, nhưng ngoại trừ phần thoát, tôi không thấy trước bất kỳ khó khăn nào. – odedbd

5

Bạn có thể sử dụng một cái gì đó như Yahoo! Query Language (YQL) để giúp bạn không phải viết một định dạng đầu ra khác cho tệp XML của bạn.

Ví dụ để có được những thức ăn XML cho câu hỏi này qua JSONP-X bạn sẽ sử dụng một URL truy vấn YQL như:

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]

nào mang đến cho bạn một kết quả như sau; hiệu quả XML bọc trong một callback JSON:

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>…"]});

widget của bạn sau đó có thể truy vấn URL YQL cho dữ liệu của họ mà lần lượt sẽ nói chuyện với các tập tin XML trên máy chủ của bạn (với bộ nhớ đệm, tốc độ , v.v. như là các tính năng bổ sung).

+0

Rất hữu ích, cảm ơn vì đã mang đến sự chú ý của tôi – gnarf

+0

Cảm ơn bạn đã gợi ý chi tiết và hữu ích. Đề xuất của Alex có vẻ đơn giản hơn một chút, mà tôi thích rất nhiều. – odedbd

1

Như của jQuery 1.5 có một phương pháp tiện ích, nó đã cứu mạng tôi để sử dụng jsonp để tải trong XML.

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

Cảm ơn, cuối cùng tôi đã sử dụng JSON, nhưng tôi chắc chắn câu trả lời của bạn có thể hữu ích nhất cho người khác. – odedbd

+0

Bạn vẫn phải trả lời XML trong một gói "JSONP" đúng không? –

+0

Vâng, bạn sẽ cần đáp ứng được đóng gói trong một hàm cho cuộc gọi JSONP, nhưng điều này chỉ minh họa cách phân tích nội dung XML của phản hồi. –

Các vấn đề liên quan