Jquery 在没有xml文件扩展名的页面中使用HTTPRequest获取xml

Jquery 在没有xml文件扩展名的页面中使用HTTPRequest获取xml,jquery,xml,httprequest,Jquery,Xml,Httprequest,我试图使用HTTPRequest,使用jQuerysAjax函数从页面获取xml。函数没有返回任何内容。我的理论是,为什么这不起作用,是因为我正在访问的页面的文件扩展名是“.ns”而不是“.xml”。这是我正在访问的页面的完整页面源 <?xml version="1.0" encoding="UTF-8"?> <logged_in_reps> </logged_in_reps> 主要有两个问题 首先,您被拒绝访问该XML文件,因为 其次,dataTyp

我试图使用HTTPRequest,使用jQuerysAjax函数从页面获取xml。函数没有返回任何内容。我的理论是,为什么这不起作用,是因为我正在访问的页面的文件扩展名是“.ns”而不是“.xml”。这是我正在访问的页面的完整页面源

   <?xml version="1.0" encoding="UTF-8"?>
<logged_in_reps>
</logged_in_reps>

主要有两个问题

首先,您被拒绝访问该XML文件,因为


其次,
dataType
参数必须用作确切的字符串。

有两个主要问题

首先,您被拒绝访问该XML文件,因为


其次,
dataType
参数必须用作确切的字符串。

是的,问题在于调用的安全限制

您可以使用JSONP技术绕过它(请参阅JQuery支持说明),但这需要您包装生成的XML输出


另一种解决方案是通过源服务器代理Ajax请求(即,在您的情况下,
www.csun.edu

是的,问题在于调用的安全限制

您可以使用JSONP技术绕过它(请参阅JQuery支持说明),但这需要您包装生成的XML输出


另一个解决方案是通过源服务器代理您的Ajax请求(即,在您的情况下,
www.csun.edu

为了解决同一源策略问题,并且您想要从中获取XML的服务器不支持JSONP,您可以使用YQL

然后,您将使用此URL作为JSONP请求的URL:

http://query.yahooapis.com/v1/public/yql?q=select *来自xml,其中url=”http://the-xml-url.com“

所以对于你的问题,你可以这样做:

yql_url = function(source_url) {
  return "http://query.yahooapis.com/v1/public/yql?q=select * from xml where url=\"" + source_url + "\"";
};

$.ajax({
    url: yql_url('https://remotesupport.csun.edu/api/command.ns?username=user&password=pass&action=get_logged_in_reps'),
    type: 'GET',
    dataType: 'xml',
    success: function(xml) {
        console.log($(xml).find('result'));
    }
});

为了解决同源策略问题,以及您想要从中获取XML的服务器不支持JSONP的事实,您可以使用YQL

然后,您将使用此URL作为JSONP请求的URL:

http://query.yahooapis.com/v1/public/yql?q=select *来自xml,其中url=”http://the-xml-url.com“

所以对于你的问题,你可以这样做:

yql_url = function(source_url) {
  return "http://query.yahooapis.com/v1/public/yql?q=select * from xml where url=\"" + source_url + "\"";
};

$.ajax({
    url: yql_url('https://remotesupport.csun.edu/api/command.ns?username=user&password=pass&action=get_logged_in_reps'),
    type: 'GET',
    dataType: 'xml',
    success: function(xml) {
        console.log($(xml).find('result'));
    }
});

您是否尝试过使用Firebug在浏览器中访问该url时检查请求?可能是重定向之类的。另外,您是否尝试过以数据类型“text”下载以查看发生了什么?是的,我使用firebug检查响应并请求没有重定向。在firebug中,它对XML“XML解析错误:找不到元素位置:moz nullprincipal:{23e8ddc5-bc72-4c7e-8e5f-79e181071896}第1行第1列说:“您是否尝试过使用firebug检查浏览器中访问该url时发出的请求?可能是重定向之类的。另外,您是否尝试过以数据类型“text”下载以查看发生了什么?是的,我使用firebug检查响应并请求没有重定向。在firebug中,它表示XML“XML解析错误:找不到元素位置:moz nullprincipal:{23e8ddc5-bc72-4c7e-8e5f-79e181071896}第1行第1列:“如果firebug在我访问的页面上显示语法错误,这是否意味着不支持JSONP?这是我正在使用的代码$.ajax({dataType:'jsonp',url:,success:function(res){alert(res);},},});请注意(如上所述),API响应需要调整以作为JSONP工作。发布的Jquery链接简要解释了响应的外观(它被解释为JavaScript!)。提供通过JSONP传递XML的讨论。如果firebug在我访问的页面上显示语法错误,是否意味着不支持JSONP?这是我正在使用的代码$.ajax({dataType:'jsonp',url:,success:function(res){alert(res);},},});请注意(如上所述),API响应需要调整以作为JSONP工作。发布的Jquery链接简要解释了响应的外观(它被解释为JavaScript!)。提供通过JSONP传递XML的讨论。您的意思是什么?你想做什么用这种方法做不到的事?我在一所学校工作。在我使用这种方法之后,他们告诉我,我们可以在生产中输出任何东西,将数据发送到我们无法控制的对象,除非您能够获得csun.edu的API来支持JSONP,否则您别无选择,只能使用代理。许多人使用YQL是因为它快速可靠。如果不允许您使用他们的服务,那么唯一的其他选择就是托管您自己的代理。代理非常容易实现。您只需在每个请求中处理2个参数。url和回调。然后从url下载数据,并将其作为字符串插入到以回调参数命名的javascript函数中。例如,
callbackname(“”)
。然后你把它作为回应返回。是的,设置代理是最后的选择,因为我自己无法设置,所以我必须找一个有更多权限的人来做。谢谢你对橡子的帮助。我很感激,你什么意思?你想做什么用这种方法做不到的事?我在一所学校工作。在我使用这种方法之后,他们告诉我,我们可以在生产中输出任何东西,将数据发送到我们无法控制的对象,除非您能够获得csun.edu的API来支持JSONP,否则您别无选择,只能使用代理。许多人使用YQL是因为它快速可靠。如果不允许您使用他们的服务,那么唯一的其他选择就是托管您自己的代理。代理非常容易实现。您只需在每个请求中处理2个参数。url和回调。然后从url下载数据,并将其作为字符串插入到以回调参数命名的javascript函数中。例如,
callbackname(“”)
。然后你把它作为回应返回。是的,设置代理是最后的选择,因为我自己无法设置,所以我必须找一个有更多权限的人来做。