Sencha Touch - AJAX 不工作

Posted

技术标签:

【中文标题】Sencha Touch - AJAX 不工作【英文标题】:Sencha Touch - AJAX not working 【发布时间】:2011-08-18 00:20:30 【问题描述】:

所以这一直有效,直到我进行了一项更改,现在它仅在我通过 Chrome 访问该网站的移动版本时才有效,而不再是在任何移动设备上。奇怪的是,由于它可以通过 Chrome 浏览器运行,我实际上无法复制这个问题。这是我的 AJAX 调用:

Ext.Ajax.request(
                            url: '/Home/PostMessage',
                            // url to post msg..
                            method: 'POST',
                            params: 
                                message: Ext.getCmp('msgText').getValue(),
                                lat: initialLocation.lat(),
                                lng: initialLocation.lng(),
                                loc: loc,
                                name: '',
                                parentId: 0,
                                FBId: 0
                            ,
                            success: function() 
                                //Ext.getCmp('post-bar').hide(type: 'pop');
                                Ext.getCmp('post-bar').hide();
                                setTimeout(function() 
                                    Ext.getCmp('posts-tab').doComponentLayout();
                                ,
                                300);
                                jabsy.stores.Listpost.load();
                            ,
                            failure: function() 
                                navigator.notification.alert('Could not post your message', // message
                                'Server Error!', // title
                                'OK' // buttonName
                                );
                            
                        );

我唯一添加的是将FBId 参数添加到帖子参数中。获取参数的操作方法如下所示:

public ActionResult PostMessage(double? lat, double? lng, string message, string loc, string name, int parentId, int FBId)
        
            var match = Regex.Match(message, @"^\s*(.)(?:\1|\s)*$");
            string ip = string.IsNullOrWhiteSpace(Request.ServerVariables["REMOTE_ADDR"].ToString()) ? "" : Request.ServerVariables["REMOTE_ADDR"];
            if (lat.HasValue && lng.HasValue && (message.Length <= 100) && !match.Success && !string.IsNullOrWhiteSpace(message))
            
                DAL dal = new DAL();
                bool success = dal.spInsertMessage(message, lat.Value, lng.Value, ip, loc, name, parentId, FBId.ToString());
                return Json(success);
            
            else
            
                return Json(false);
            
        

就像我说的,如果您从 Chrome 访问移动网站,它仍然有效。

如果您想自己测试,请在 Chrome 或 Safari 浏览器(必须是 webkit)中转到 www.jabsy.com/Home/MobileHome,然后尝试并确认它可以正常工作,但此后不再从移动设备发布添加了一个参数。我无法为我的生活弄清楚为什么。没有错误弹出,他们只是不会发布它。

Sencha Touch 有一些 AJAX 参数限制吗?但即使他们这样做了,那也应该阻止它通过桌面浏览器工作,对吧?我无法真正测试它是否可以进入服务器然后出现问题,或者它永远不会成功,b / c我不知道有什么方法可以从移动设备上测试它,所以我不知道发生了什么。

好困惑。

【问题讨论】:

你在使用缓存清单吗? 我不知道那是什么,所以我不会猜测,但这只是猜测。 它是否在调用您的故障处理程序?您可以通过调试器或wireshark 运行服务器并查看请求是否到达服务器? 移动设备永远不会像故障处理程序那样弹出错误消息。通过互联网浏览器,Sencha Touch 网站可以正常工作,进入服务器并发布。我不知道如何使用移动设备跟踪所有内容 b/c 我只能在代码投入生产后在移动设备上进行测试。 【参考方案1】:

所以我想通了。只是为了它,有点受到乔伊评论的启发——我用我的安卓手机从它的浏览器中清除了所有缓存/cookies/浏览历史,然后又试了一次。

现在可以了。我不知道为什么会这样。我之前更新了完全相同的参数,例如,当我在添加当前新参数之前添加 parentId 参数时,这个问题没有发生。

不知道,但这就是解决它的方法。如果有人对为什么或如何防止将来发生这种情况有任何想法,请发表评论。

【讨论】:

以上是关于Sencha Touch - AJAX 不工作的主要内容,如果未能解决你的问题,请参考以下文章

Sencha Touch Google Maps 标记监听器不工作

Sencha Touch 让一个简单的按钮工作

Sencha Touch 2.3.1 + Phonegap 3.4 jsonp 在 Android 中不工作,但在浏览器上工作

Sencha Touch:这个框架到底是如何工作的?

Sencha Touch 工作流程

sencha touch 按距离排序列表