Sencha touch 2 无法让 Ajax 调用正常工作

Posted

技术标签:

【中文标题】Sencha touch 2 无法让 Ajax 调用正常工作【英文标题】:Sencha touch 2 cannot get Ajax calls working 【发布时间】:2014-03-16 14:29:03 【问题描述】:

我有这个简单的函数,我从我的应用程序中调用 launch() 函数:

function ajaxCall()
  Ext.Ajax.request(
    url: 'ajax/Hello!', // Request should go to host/ajax url as http get request
                 // and server should return plain text `Hello!` as answer
    success: function(response)
      prompt('Ajax call success!', response.responseText); // My own prompting method
    
  );

问题是这个请求似乎没有被提出。它没有显示在我的 Play 框架服务器或 Google Chrome 的网络开发人员标签中。

编辑 程序似乎也卡在Ext.Ajax.request 函数上。

【问题讨论】:

尝试在 app.js 的 'require' 属性中添加“Ext.Ajax”。 你是在launch里面调用ajaxCall()吗? 是的,我从我的 launch() 方法中调用该方法。 你的sencha在你服务器的同一个域上吗? sencha ajax 无法运行或跨域(需要使用 jsonp)。 这很奇怪。你的提示叫什么?你能在 chrome 网络上查看申请吗? 【参考方案1】:

下面的 ajax 调用代码对我来说效果很好。

Ext.Ajax.request(
    async : true,
    url : 'api/login/',
    method : 'POST',
    jsonData : 
        "email":Ext.getCmp('loginUserNameTxtBoxId')._value,
        "pwd":Ext.getCmp('loginPasswordTxtBoxId')._value,
    ,
    success : function (request, resp) 
        alert("in login success");
    ,
    failure: function(request, resp) 
        alert("in failure");
    
);

【讨论】:

【参考方案2】:

您的网址应该是一个 http 网址。例如,您还应该指定操作(GET、POST)。您已经指定要使用 Ext.Ajax.request 进行 ajax 调用。

如果要使用参数,请使用参数对象。

示例:

 Ext.Ajax.request(
        url : 'http://google.com/api/blabla',
        method: 'GET',
        params: 
            username: 'bla',
            password: 'blabla'
        ,
        success: function(response, request)  console.log('success'); 
    );  

如果已发出请求,请检查 chrome 开发者工具中的网络选项卡。

【讨论】:

Sencha touch 2 Ext.Ajax 文档说我不必添加完整的 url 来拨打电话。 '/ajax' 应该可以正常工作。如果我错了,请纠正我 你是对的。我刚刚检查了文档。如果未指定,则请求使用 GET 方法。但是你在什么上执行 get 方法?主机/ajax?您的服务器在 /ajax 上返回什么? 服务器返回路径 /ajax/something 的纯文本 ok 答案。如果我在浏览器中输入localhost:9000/ajax/Hello!,它会返回纯文本Hello! 作为答案。 我还可以从 chrome 开发人员选项卡中看到,我的请求永远不会像我在问题中指定的那样被提出。【参考方案3】:

我注意到我忘记将Ext.Ajax 添加到我的应用程序需要字段中。添加后一切正常。

【讨论】:

以上是关于Sencha touch 2 无法让 Ajax 调用正常工作的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 ajax 在 javascript 中使用个人 http 标头加载图像(sencha touch 2)

Sencha Touch - AJAX 不工作

在 sencha touch 2 中加载外部 url

如何在 Sencha Touch Ajax 请求中发现 302 响应

如何将ajax请求放入sencha touch中的变量中?

如何在 Sencha Touch 2 的 Ajax 请求中捕获请求异常?