2009-08-21 82 views
0

我正在開發專門針對手機的網絡應用程序,而且我遇到了一個難題。在我安裝的黑莓模擬器上,一切正常。但是當我運行我的Openwave或諾基亞N60仿真器時,我無法再登錄到我的應用程序。當我檢查日誌時,我發現原因是所有的$ _POST變量都是空的。爲什麼手機模擬器會丟失POST變量?

我已經經歷了幾乎所有我能想到的事情,那就是問題,而且我仍然堅持。我已經嘗試了維基百科列出的所有三種DOCTYPE,但是偶然發現,我嘗試發送各種不同的標題,而我只是難住。

我最後的想法是,也許我的表單代碼本身是錯的?我在表格中附上一個表格,我看到的所有例子都附上了一個表格。

I.e.在這些例子中我看到:

<form> 
    <p> 
     ... stuff ... 
    </p> 
</form> 

而且我有:

<form action="/" method="POST" class="formic"> 
    <table class="mobile-form"> 
     <tr> 
      <td colspan="2" class="label required">Email address</td> 
     </tr> 
     <tr> 
      <td colspan="2" class="data"><input type="text" name="email" class="text" /></td> 
     </tr> 
     <tr> 
      <td colspan="2" class="label required">Password</td> 
     </tr> 
     <tr> 
      <td><img src="/images/exclamation.png" class="error_icon" value="/images/exclamation.png" /></td> 
      <td class="data"><input type="password" name="password" class="text" /></td> 
     </tr> 
     <tr> 
      <td colspan="2" class="data field-error">You must enter a password.</td> 
     </tr> 
     <tr> 
      <td colspan="2" class="label required">Sign in to:</td> 
     </tr> 
     <tr> 
      <td colspan="2" class="data"> 
       <select name="aspect"> 
        <option value="web">Web interface</option> 
        <option selected="selected" value="mobile">Mobile interface</option> 
       </select> 
      </td> 
     </tr> 
     <tr> 
      <td colspan="2"> 
       <input type="hidden" name="saved_aspect" value="0" /> 
       <label> 
        <input type="checkbox" name="saved_aspect" checked="checked" value="1" /> 
        Save interface choice on this computer. 
       </label> 
      </td> 
     </tr> 
     <tr> 
      <td colspan="2" class="submit"><input type="submit" name="" class="submit" value="Log in" /></td> 
     </tr> 
    </table> 
</form> 

莫非是嗎?我在哪裏可以找到證明這一點的文件/規範?

回答

1

向我們顯示輸入按鈕(和一般形式)的代碼。我認爲我以前遇到過這個問題,而按鈕的類型不是'submit'(或者其他一些非常非常愚蠢的錯誤)。

+0

添加完整的表格代碼。 – 2009-08-21 03:31:20

+0

該死的。我希望我提供一些幫助。 – 2009-08-21 03:42:00

0

如果您發佈到網頁而不是網站的根目錄,行爲是否會改變?

+0

可悲的是,沒有。最初,這個頁面錯誤地將結果發送到/ login/index - 這是正確的控制器路徑,但是/默認路由到它/無論如何。我手動修復它以定位網站的根目錄,並且仍然沒有骰子。 它適用於Firefox和Blackberry,所以我猜這是與更嚴格的解析器或Openwave和諾基亞的產品有關? – 2009-08-21 03:44:38

3

較舊的諾基亞Symbian 9'服務'瀏覽器有一個主要的(IMO)錯誤,導致與大多數HTML表單元素相關的POST變量不會被髮送到服務器。用戶看到單選按鈕和複選框爲選中狀態,但是當他們提交表單時,瀏覽器無法發送POST數據。我觀察到您在N70,N71和其他一些常見的Symbian 9手機中所報告的相同問題。

較舊的諾基亞Symbian 9手機有兩種瀏覽器:「服務」和「網絡」。主要區別在於「服務」瀏覽器用於WAP瀏覽,因爲基於Webkit的瀏覽器不包括當時占主導地位的移動標記語言WML的任何支持。 「服務」瀏覽器被設置爲許多手機的默認瀏覽器 - 不知道它何時更改,但有時在N95發佈時。當用戶使用基於Webkit的'迷你地圖'瀏覽器時,沒有任何問題,但'服務'瀏覽器丟失了POST數據。

如果用戶通過短信或彩信中的鏈接訪問您的頁面,他們將使用手機的默認瀏覽器。我不知道有什麼方法來修復這個錯誤,並且諾基亞論壇或其他網站上的信息很少。在我的製作網站上,我試圖儘可能地避開POST表單。