在sencha touch 2中的Http请求

时间:2012-03-04 22:38:30

标签: http rest extjs sencha-touch sencha-touch-2

我对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);
        }
    });

稍后,我想使用此功能来实现应用程序的登录。

我提前感谢您的帮助。

3 个答案:

答案 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);
    }
});