Javascript 在IE、FF和Safari中运行Ajax
我试图创建一个到weather xml提要的ajax连接,然后解析返回的数据。我通过IE建立连接没有任何问题,但出于某种原因,我在FF或Safari中没有任何运气。基本上,我正在运行一个包含以下代码的html文件Javascript 在IE、FF和Safari中运行Ajax,javascript,ajax,Javascript,Ajax,我试图创建一个到weather xml提要的ajax连接,然后解析返回的数据。我通过IE建立连接没有任何问题,但出于某种原因,我在FF或Safari中没有任何运气。基本上,我正在运行一个包含以下代码的html文件 <html> <script type="text/javascript" language="javascript"> function makeRequest(zip) { var url = 'http://rdona.accu-w
<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>
函数makeRequest(zip){
var url='1〕http://rdona.accu-weather.com/widget/rdona/weather-data.asp?location=“+zip;
//var-httpRequest;
var-httpRequest=false;
如果(window.XMLHttpRequest){
编写(“xmlhttprequest”);
httpRequest=新的XMLHttpRequest();
if(httpRequest.overrideMimeType){
httpRequest.overrideMimeType('text/xml');
//关于这一行,请参见下面的注释
}
}
如果(window.ActiveXObject){//IE
试试{
httpRequest=新的ActiveXObject(“Msxml2.XMLHTTP”);
}
第(e)款{
试试{
httpRequest=新的ActiveXObject(“Microsoft.XMLHTTP”);
}
捕获(e){}
}
}
如果(!httpRequest){
警报(“放弃:(无法创建XMLHTTP实例”);
返回false;
}
httpRequest.onreadystatechange=函数(){alertContents(httpRequest);};
httpRequest.open('GET',url,true);
httpRequest.send(“”);
}
函数alertContents(httpRequest){
如果(httpRequest.readyState==4){
如果(httpRequest.status==200){
警报(httpRequest.responseText);
}否则{
警报(“请求有问题”);
}
}
}
发出请求(84405);
任何帮助和建议都将不胜感激。对于跨浏览器的内容,我建议您使用JQuery这样的库,因为它可以悄悄地解决IE、Firefox和Safari等问题。另外,为了使代码格式正确,请使用工具栏中的101010按钮。我强烈建议您使用一个框架来完成这类工作框架将为您完成所有浏览器兼容性方面的工作 另一方面,如果你对如何做这项学术练习感兴趣…还是要有一个框架!看看框架是如何做到的,你会立即学会所有的陷阱 为了在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类的完整文档
如果您想了解Mootools如何实现跨浏览器AJAX,可以找到请求类的源代码
您会发现的源代码特别有用。我担心您会遇到一些问题,因为这意味着您无法对其他域执行XMLHTTPRequests
即使是(无论如何,你真的应该检查一下)也不能帮你解决这个问题。如果你删除了“document.write(“xmlhttprequest”);”这行代码,它会起作用吗我把它放在那里只是为了测试,这样我就可以看到我得到了什么。这是一个iphone项目,我不确定这是否适用于我的目的。我不熟悉iphone开发。但是,如果iphone应用程序理解JavaScript,那么Mootools有一个服务器版本,应该可以在iphone应用程序中运行。只要把它放在你的顶部就行了r代码。@cameron-应该可以。Mobile Safari的标准支持非常好,我不希望它在ajax支持方面与桌面版本有太大区别。