我想調用一個.NET web服務,從JavaScript返回一個XML文檔。 Web服務位於與我的應用程序不同的Web服務器上。我無法控制Web服務。我已經使用jQuery成功調用了服務,將dataType設置爲jsonp,我可以看到XML文檔在Firebug中返回。不過,我在Firebug控制檯中發現錯誤「missing; before statement」,看起來它試圖解析返回的xml(對於json也許??)。任何想法或什麼是調用返回xml的跨域Web服務的最佳方式?非常感謝!Javascript跨域Web服務調用
0
A
回答
0
成才這樣的:
$.getJSON("http://yoursite.com/xml2json.php?callback=?", {feed:"http://agency.nd.edu/agencynd-team.xml"}, function(data) { // process data here } }); <?php header('content-type: application/json; charset=utf-8'); if(strlen($_GET["feed"]) > 13) { $xml = file_get_contents(urldecode($_GET["feed"])); if($xml) { $data = @simplexml_load_string($xml, "SimpleXMLElement", LIBXML_NOCDATA); $json = json_encode($data); echo isset($_GET["callback"]) ? "{$_GET[’callback’]}($json)" : $json; } } ?>
1
的JSON-P的數據格式是JavaScript程序。如果您使用JSON-P,那麼您返回的數據必須是JavaScript。
JSON-P的工作原理是加載使用<script>
元素的文檔(這是永遠不會任意XML數據)
的選項有:
- 說服任何人做控制Web服務給你一個JSON-P接口
- 說服任何人沒有控制Web服務授予您的網站允許通過CORS訪問它(注limited browser support)
- 代理的我們通過自己的服務器,以便您的JS B服務是在same origin
0
操作如果設置數據類型爲JSONP你應該得到響應包裹在函數調用。例如,如果你希望得到
object {"key": "value"}
爲JSONP的反應應該是
parseRespone({"key":"value"});
這樣做的原因是,JSONP增加<腳本>標籤網頁標題,所以應該追加有效的JavaScript代碼那裏。
如果你沒有可能與服務器的開發者聯繫,我會建議做一個Ajax調用你的頁面,在那裏頁面將與.NET服務器進行curl連接,並在純json中迴應響應。
0
一種可能性是完全避免使用JSON,而是使用cURL和PHP代理。將數據發送到服務器上的PHP腳本,然後與其他域上的腳本形成cURL會話,並返回到原始AJAX調用方的結果。
相關問題
- 1. 跨域Web服務調用
- 2. Ajax的跨域調用REST Web服務
- 3. 的jQuery +跨域+ AJAX + Web服務調用
- 4. JavaScript跨域ASMX Web服務中的AJAX錯誤JSONP調用
- 5. 跨域調用WCF服務
- 6. Web服務技術跨域
- 7. jQuery + Web服務+跨域
- 8. 訪問Web服務 - 跨域
- 9. 使用CORS跨域REST/Jersey web服務
- 10. 使用jquery和jsonp的ASP.NET跨域web服務調用錯誤
- 11. 使用jQuery jsonp跨域調用ASP.NET web服務
- 12. 如何從跨域使用ajax調用asp.net web服務
- 13. 使用Jsonp調用跨域Asp.Net Web服務
- 14. 如何從ASP.NET Web服務爲跨域調用生成JSONP?
- 15. 什麼是與jQuery的跨域Web服務調用?
- 16. 跨域Web服務調用未返回預期的結果
- 17. Ajax調用PHP服務跨域
- 18. 從跨域調用asmx服務
- 19. 從web服務調用javascript
- 20. 從Javascript調用Web服務
- 21. 使用JavaScript調用跨域asmx網絡服務
- 22. 跨進程同步Web服務調用
- 23. 的XML Web服務跨域訪問
- 24. WCF Web服務,跨域示例
- 25. 跨域web服務 - 腳本錯誤
- 26. 如何創建跨域asp.net web服務
- 27. 跨域javascript函數調用?
- 28. 跨域進行JavaScript調用
- 29. WCF javascript調用跨域
- 30. 通過SSL調用Web服務域名
你不能在XML中使用jsonp。您必須在服務器上使用代理。 – evan