我正在尝试创建与天气xml Feed的ajax连接,然后解析返回的数据。我没有任何问题通过IE建立连接,但由于某种原因我在FF或Safari没有任何运气。基本上我正在做的是运行包含以下代码的html文件。
<html>
<script type="text/javascript" language="javascript">
function makeRequest(zip) {
var url = 'http://rdona.accu-weather.com/widget/rdona/weather-data.asp?location=' + zip;
//var httpRequest;
var httpRequest = false;
if (window.XMLHttpRequest) {
document.write("xmlhttprequest");
httpRequest = new XMLHttpRequest();
if (httpRequest.overrideMimeType) {
httpRequest.overrideMimeType('text/xml');
// See note below about this line
}
}
else if (window.ActiveXObject) { // IE
try {
httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e) {
try {
httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e) {}
}
}
if (!httpRequest) {
alert('Giving up :( Cannot create an XMLHTTP instance');
return false;
}
httpRequest.onreadystatechange = function() { alertContents(httpRequest); };
httpRequest.open('GET', url, true);
httpRequest.send('');
}
function alertContents(httpRequest) {
if (httpRequest.readyState == 4) {
if (httpRequest.status == 200) {
alert(httpRequest.responseText);
} else {
alert('There was a problem with the request.');
}
}
}
makeRequest(84405);
</script>
</html>
非常感谢任何帮助或建议。
答案 0 :(得分:1)
我强烈建议您使用框架来执行此类操作。 Frameworks将为您完成所有浏览器兼容性工作。
另一方面,如果你对如何做这个学术活动感兴趣...仍然有一个框架!看看框架是如何做到的,你将立即了解所有的陷阱。
Mootools is my framework of choice
要在Mootools中执行基本的AJAX请求,您需要执行以下操作:
window.addEvent('domReady', function() {
new Request({
'url': "The url where you want to send the request
'data': "Some data to send. It can be an object."
}).send();
});
可以找到Request类的完整文档here。
如果您想了解Mootools如何实现跨浏览器AJAX,您可以找到Request类here的来源。
您会发现Browser.Request的来源特别有用。
答案 1 :(得分:1)
由于same origin policy,我担心你会遇到一些问题,这意味着你无法将XMLHTTPRequests转到另一个域。
即使jQuery(你真的应该检查出来)也不能帮助你。
答案 2 :(得分:0)
对于跨浏览器的东西,我建议你使用像JQuery这样的库,因为它会在IE与Firefox和Safari等问题上悄然平滑。另外,要正确制作代码格式,请使用工具栏中的101010按钮。