2011-08-18 92 views
2

所以这个问题一直在进行,直到我做了一个更改,现在只有当我通过Chrome访问该网站的移动版本,而不是任何移动设备时,它才会工作。奇怪的是,由于它通过Chrome浏览器工作,我实际上不能复制这个问题。这是我的AJAX调用:Sencha Touch - 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参数的post数据。获取参数的动作方法如下所示:

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我不知道有什么方法可以通过移动设备进行测试,所以我是在黑暗中发生了什么事情。

那么困惑。

+0

您使用的是缓存清单吗? – Joe

+0

我不知道那是什么,所以我不会猜测,但这只是一个猜测。 – slandau

+0

它打电话给你的失败处理程序?你能通过调试器或wireshark运行服务器,看看请求是否到达服务器? –

回答

1

所以我想通了。只是为了它,它的灵感来自于Joey的评论 - 我用我的Android手机清除了浏览器中的所有缓存/ cookies /浏览记录,然后再次尝试。

它现在可以工作。我不知道为什么会发生这种情况。我之前更新过相同的参数,例如,在添加当前新参数之前添加parentId参数,并且未发生此问题。

不知道,但那是解决它。如果任何人有任何想法为什么,或如何防止这种事情发生在未来,请发表评论。