【问题标题】:Submitting a form from iPhone to PHP从 iPhone 向 PHP 提交表单
【发布时间】:2012-05-12 12:13:18
【问题描述】:

我肯定遗漏了一些简单的东西...下面是我尝试提交给 PHP 脚本的简单表单。它在 PC 和 Mac 上运行良好,但在 ipad、iphone 等设备上的 Safari 中却不行。我猜我缺少一个移动组件?

<html>
<head>
    <title>Title</title>
    <script src="http://code.jquery.com/mobile/1.0a2/jquery.mobile-1.0a2.min.js"></script>
    <script type="text/javascript">

$('form').submit(function(){
    var postData = $(this).serialize();

    $.ajax({
        type: 'POST',
        data: postData,
        url: "http://www.norwichandyork.com/pocketleads/utilities/accounts.php",
        success: function(data){
            console.log(data);
            alert('Your comment was successfully added');
        },
        error: function(){
            console.log(data);
            alert('There was an error adding your comment');
        }
    });

    return false;
});
</script>
</head>
<body>


<form method="post" action="http://www.norwichandyork.com/pocketleads/utilities/accounts.php">
    <label for="email">
        <b>Email</b>
        <input type="text" id="email" name="email">
    </label>

    <label for="fname">
        <b>fname</b>
        <input type="text" id="fname" name="fname">
    </label>

    <input type="submit" value="Save">
</form>

</body>
</html>

我重新发布了我的完整代码并留下了操作网址,以便任何人都可以轻松尝试。提前感谢您的所有帮助。 :)

【问题讨论】:

  • 你确实在某处包含了 jquery,对吧?
  • 即使发布的代码中没有 jQuery 包含,但我看不出它在没有它的情况下如何在 PC/Mac 上正常工作。
  • 是的,

标签: javascript ios ajax forms post


【解决方案1】:

解决了!不确定它是 Xcode 还是 PhoneGap 的东西,但您必须将您从应用程序访问的每个域都列入白名单。虽然我确实将我的域列入了白名单,但它仍然不起作用。我在检查编译错误日志时发现了这一点。我发现了这个:http://www.prosoxi.com/2011/10/08/xcode-phonegap-white-list-rejection/ 并通过将 *.mydomain.com 添加到白名单中,现在一切正常。谢谢大家的意见。

【讨论】:

    【解决方案2】:
    <script type="text/javascript">
    

    而不是

    <script language="JavaScript">
    

    【讨论】:

      【解决方案3】:

      &lt;form action="post"&gt;

      form 元素的action 属性指定应将数据发送到何处。除非您的 PHP 脚本被称为 post,否则我认为您应该将 action 更改为 method 并包含实际操作。

      &lt;script language="JavaScript"&gt;

      另外,你不应该指定script 元素的language 属性(已经很久没有使用了),但是在HTML5 之前你应该使用type 属性并且对于JS 它的值应该是text/javascript。从 HTML5 开始,除非另有说明,否则所有 script 元素都假定为 JavaScript。

      我写了所有这些,然后意识到你无论如何都在劫持表单,所以action/method 事情并不重要。无论如何它可能会有所帮助,所以我会留下答案。

      【讨论】:

      • 设置表单操作无关紧要,因为它是通过 ajax 发送的
      • 是的,这就是我写最后一段的原因。我绝对认为最好使用渐进增强,并且设置表单操作并在脚本中使用它(而不是硬编码)这​​样简单的事情会使其在禁用 JS 的设备上也能工作。
      猜你喜欢
      • 2018-12-31
      • 2016-01-01
      • 2013-09-30
      • 2014-06-20
      • 2016-09-22
      • 2013-09-10
      • 1970-01-01
      • 2012-02-18
      相关资源
      最近更新 更多