我正在尝试从javascript调用返回XML文档的.NET Web服务。 Web服务位于与我的应用程序不同的Web服务器上。我无法控制Web服务。我已经使用jQuery成功调用了服务,将dataType设置为jsonp,我可以看到在Firebug中返回XML文档。但是,我在Firebug控制台中出现错误“missing; before statement”,看起来它正在尝试解析返回的xml(可能是json)。任何想法或什么是调用返回xml的跨域Web服务的最佳方式?非常感谢!
答案 0 :(得分:1)
JSON-P数据格式是一个JavaScript程序。如果您使用JSON-P,那么您获得的数据必须是JavaScript。
JSON-P的工作原理是使用<script>
元素加载文档(这对于任意XML数据永远不会起作用)
您的选择是:
答案 1 :(得分: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; } } ?>
答案 2 :(得分:0)
如果将dataType设置为jsonp,则应该在函数调用中包含响应。例如,如果你希望得到
object {"key": "value"}
jsonp的响应应为
parseRespone({"key":"value"});
原因是jsonp添加&lt; script&gt;标记到您的页眉,所以它应该附加有效的JavaScript代码。
如果您无法与服务器的开发人员联系,我建议对您的页面进行ajax调用,其中页面将与.NET服务器进行curl连接并在纯json中恢复响应。
答案 3 :(得分:0)
一种可能性是完全避免使用JSON并使用cURL和PHP代理。将数据发送到服务器上的PHP脚本,然后与另一个域上的脚本形成一个cURL会话,并将结果返回给原始的AJAX调用者。