2011-08-18 108 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參數,並且未發生此問題。

不知道,但那是解決它。如果任何人有任何想法爲什麼,或如何防止這種事情發生在未來,請發表評論。