【问题标题】:Why would mobile phone emulators be losing POST variables?为什么手机模拟器会丢失 POST 变量?
【发布时间】:2009-08-21 03:12:39
【问题描述】:

我正在开发一个专门用于手机的网络应用程序,但我遇到了一个大问题。在我安装的黑莓模拟器上,一切正常。但是当我运行我的 Openwave 或诺基亚 N60 模拟器时,我无法再登录我的应用程序。当我检查日志时,我发现原因是所有的 $_POST 变量都是空的。

我已经完成了我能想到的所有问题,但我仍然陷入困境。我已经尝试了 Wikipedia 列出的所有三种 DOCTYPE,如果仅此而已,我已经尝试发送各种不同的标头,但我只是难住了。

我的最后一个想法是,也许我的表单代码本身是错误的?我在我的表格中附上了一个表格,我看到的所有示例都在表格中附上了一个段落。

即在我看到的例子中:

<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>

可以吗?我在哪里可以找到可以证明这一点的文档/规范?

【问题讨论】:

    标签: php post mobile-website xhtml-mp


    【解决方案1】:

    旧的诺基亚 Symbian 9“服务”浏览器有一个主要 (IMO) 错误,该错误会导致与大多数 HTML 表单元素相关的 POST 变量无法发送到服务器。用户看到单选按钮和复选框被选中,但是当他们提交表单时,浏览器根本无法发送 POST 数据。我观察到您在 N70、N71 和其他一些较旧的 Symbian 9 手机中普遍流通的相同问题。

    旧款诺基亚 Symbian 9 手机有两种浏览器:“服务”和“网络”。主要区别在于“服务”浏览器用于 WAP 浏览,因为基于 Webkit 的浏览器不包括对 WML 的任何支持,WML 是当时占主导地位的移动标记语言。 “服务”浏览器在许多手机中被设置为默认浏览器——不确定何时更改,但在 N95 发布前后的某个时间。用户使用基于 Webkit 的“迷你地图”浏览器时没有问题,但“服务”浏览器会丢失 POST 数据。

    如果用户通过 SMS 或 MMS 消息中的链接访问您的页面,他们将使用手机的默认浏览器。我不知道有什么方法可以修复这个错误,而且诺基亚论坛或其他网站上的信息也很少。在我的生产站点中,我试图尽可能避免使用 POST 表单。

    【讨论】:

      【解决方案2】:

      向我们展示输入按钮(和一般形式)的代码。我想我以前遇到过这个问题,并且按钮不是“提交”类型的(或其他一些非常非常愚蠢的错误)。

      【讨论】:

      • 该死的。我希望我能提供一些帮助。
      【解决方案3】:

      如果您发布到页面而不是网站的根目录,行为会改变吗?

      【讨论】:

      • 很遗憾,没有。最初,此页面错误地将结果发送到 /login/index - 这是正确的控制器路径,但默认情况下 / 路由到它。我手动修复它以定位站点的根目录,但仍然没有骰子。它适用于 Firefox 和 Blackberry,所以我猜这与更严格的解析器或 Openwave 和诺基亚产品中的某些东西有关?
      猜你喜欢
      • 2014-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-05
      • 2010-09-20
      • 1970-01-01
      • 1970-01-01
      • 2011-04-15
      相关资源
      最近更新 更多