【问题标题】:How to submit form, programatically with jQuery?如何使用 jQuery 以编程方式提交表单?
【发布时间】:2015-08-11 00:06:01
【问题描述】:

我有表单,当提交时,它正在发出 ajax POST 请求,发布从表单中获取的数据。形式非常简单。

<form id="form1">
    <input type="text" name="domain" id="field1">
    <input type="submit" name="my-submit" id="my-submit" value="Submit Form" class="btn btn-info btn-lg">
    <!--<button type="button" class="btn btn-info btn-lg" id="myBtn">Open Modal</button>-->
</form>

然后#response div 加载返回的内容。

# HTML code ...
<div class="modal-body" id="response">
    <p>Some text in the modal.</p>
</div>
# HTML code ...

最后是 JavaScript...

$('#form1').submit(function(event) {
    event.preventDefault();
    $.ajax({
        type: 'POST',
        url: 'check.php',
        data: $(this).serialize(),

        success: function (data) {
            //console.log(data);

            $('#response').html(data);
            $("#myModal").modal();
        }
    });
});

然后,我想检查我的 index.php 脚本,上面的所有这些都在哪里,如果是在 URL 中传递的 $domain 变量,例如 yoursite.com?domain=domain.com,如果是,则调用 submit();使用此代码以编程方式运行:

if(isset($_GET['domain'])) {
    $domain = $_GET['domain'];
    echo $domain;
    echo "
        <script>
            $('#form1').submit();
        </script>
    ";
    //exit();
}

问题是,什么都没有发生。如何实现期望的行为?

【问题讨论】:

  • console 是什么意思

标签: javascript php jquery ajax forms


【解决方案1】:
<form id="form1">
    <input type="text" name="domain" id="field1">
    <input type="submit" onclick="return call();" value="Submit Form">
</form>

<script type='text/javascript'>
function call()
{
  //ajax code;
  return true;//are your want form submit
  return false;// are your want cannot form submit
}
</script>

别忘了放回车

【讨论】:

    【解决方案2】:

    你不应该那样做。没有理由向客户端提供页面,自动填写表单并回传到服务器。

    相反,您应该检查是否设置了$_GET['domain'] 域,如果是,则应直接包含您的check.php 文件。你应该调整check.php 来处理 POST 和 GET 参数。

    这将为您节省到客户端的往返行程,并且不依赖于启用 javascript 的客户端。

    【讨论】:

    • 通常我使用 POST 和 AJAX 将表单数据发布到 check.php。另一个用户案例场景是当用户将变量传递给 URL 时,例如 yoursite.com/domain.com (将用 mod rewrite 重写),但我不 check.php 来返回数据,而是我不想我的 index.php返回数据。所以我的 index.php 将同时处理 $_GET 和 $_POST,因为我的 check.php 将纯数据返回到 index.php 中的模式窗口。
    • @AlanKis 假设 check.php 在您发出 POST 请求时回显数据,您只需要确保它存储变量以防 GET 请求(包含时),以便您可以使用该变量在页面加载时生成模式。
    • 绝妙的主意,杰罗恩。我将在我的#response div 中回显数据,但我不确定如何使用 $("#myModal").modal(); 触发我的模式窗口,或触发它的事件,或以编程方式触发它。
    • @AlanKis 这不会改变,你触发它的方式与现在相同,但是当 DOM 准备好(标准 jQuery)并且设置了 $_GET['domain'] 时,就像你试图用你的自动提交。打开模态窗口的代码不需要进行 ajax 调用。
    猜你喜欢
    • 2014-07-11
    • 2020-10-03
    • 2010-11-22
    • 1970-01-01
    • 2011-01-31
    • 2018-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多