我对sencha touch 2很新。 我想发一个http请求。基本上我想连接到谷歌(http://www.google.com),然后检查http响应是否正常。
我检查了这段代码,但我总是失败......
Ext.Ajax.request({
url : 'http://www.google.com',
success : function(response, options) {
Ext.Msg.alert("Success");
},
failure : function(response, options) {
Ext.Msg.alert("Failure" + response.responseText + " "
+ options.responseText);
}
});
稍后,我想使用此功能来实现应用程序的登录。
我提前感谢您的帮助。
答案 0 :(得分:1)
您可以使用params --disable-web-security打开Chrome。接下来,您必须提出Ajax请求(没有跨域策略)。在设备上,您使用Web容器而不是浏览器来发出请求。
答案 1 :(得分:0)
当我尝试你的代码时,它给了我成功警报。 但在控制台我收到此错误
XMLHttpRequest cannot load http://www.google.com/?_dc=1330926850434. Origin http://localhost is not allowed by Access-Control-Allow-Origin.
此错误是因为google服务器不允许来自domin localhost的ajax请求。 如果你想在这个网址上发送requset,你必须使用Jsonp。
答案 2 :(得分:0)
有一个跨域策略限制用户直接通过AJAX请求获取数据。所以,如果你想这样做,你必须在这里使用ScriptTagProxy。
如果您要创建登录机制并且数据驻留在同一服务器(您的案例为localhost)中,您将不会遇到任何问题,因为您将从“localhost”向“localhost”发出AJAX请求,即到同一个域然后就不会有这样的问题了。
否则,如果你真的希望它是跨域的,你可以写一个服务器端代码(我在php中显示 - 你应该使用cURL)来连接和获取数据 - 这不需要JSONP。
文件名:action.php
<?php
print file_get_contents(http://www.google.com);
?>
文件名:您的js文件
Ext.Ajax.request({
url : 'action.php',
success : function(response, options) {
console.log(response);
Ext.Msg.alert("Success");
},
failure : function(response, options) {
Ext.Msg.alert("Failure" + response.responseText + " "
+ options.responseText);
}
});