首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >jquery提交和按钮提交的区别

jquery提交和按钮提交的区别
EN

Stack Overflow用户
提问于 2016-07-18 14:07:44
回答 2查看 57关注 0票数 0

我一直在尝试让我的html表单在页面加载时自动启动,而不是当按钮被单击时启动,但是一直无法获得$.ajax$.get$.post方法来执行与提交按钮相同的提交。

我的第一个方法是使用一个普通按钮:

代码语言:javascript
运行
复制
  <input style="width:80%;margin-left:10%;display:none;" class="span2" name="latest" id="latest" type="text" value="">
  <input style="" type="submit" value="Go" name="/latest">

这完全符合我的预期,但是我希望表单在页面加载时自动提交,这样:

代码语言:javascript
运行
复制
    <div id="cont2">
      <script type="text/javascript">
      var a=$('#target').serialize();
$.ajax({
    type:'post',
    url:'/latest',
    data:a,
    beforeSend:function(){
        alert("click");
    },
    complete:function(){
        alert("complete");
    },
    success:function(result){
         alert(result);
         $( '#cont2' ).html();

    }
});
        </script>
</div>

这并没有像预期的那样执行,而不是从/latest路由返回值,而只是返回相同的页面。

这种方法也不起作用:

代码语言:javascript
运行
复制
      <script type="text/javascript">
$.get( "/latest", function( data ) {
  $( "#cont2" ).html( data );
  alert( "Load was performed." );
});
        </script>

因为该路由是一个POST路由,所以它需要一个post提交,但是这也不起作用:

代码语言:javascript
运行
复制
     <script type="text/javascript">
  $('form[name=target]').submit(function(){
    $.post($(this).attr('action'), $(this).serialize(), function(json) {
      alert(json);
    }, 'json');
    return false;
  });
        </script>

单击按钮后到达的实际有效的路由为:

代码语言:javascript
运行
复制
$f3->route('POST /', function($f3, $params) {
    if(isset($_POST['/latest']))
    {
        echo "accept";
    }
}

简而言之,当单击按钮时,所有操作都会按预期进行。但是,当使用jquery提交表单时(因此我可以自动完成),我无法让表单返回相同的响应。任何帮助解决这个问题的人都将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-07-18 14:11:03

$.ajax和您正在使用的其他方法,以不同于常规表单提交(这会导致页面重新加载)的方式(异步方式)提交表单。如果您希望它的行为像我们单击表单的submit按钮时一样,您可以在该表单上触发submit

代码语言:javascript
运行
复制
<form id="myform" method="post" action="/your_form_handler">
  <input style="width:80%;margin-left:10%;display:none;" class="span2" name="latest" id="latest" type="text" value="">
  <input style="" type="submit" value="Go" name="/latest">
</form>


$(document).ready(function(){
  $("#myform").submit();
});//document ready
票数 1
EN

Stack Overflow用户

发布于 2016-07-18 15:05:44

假设表单是这样的,

代码语言:javascript
运行
复制
<form action="your_url" style="display:none" id="your_form_id">      
    <input style="width:80%;margin-left:10%;" class="span2" name="latest" id="latest" type="text" value="">
    <input style="" type="submit" value="Go" name="/latest">
</from>

如果你需要在当前窗口加载所有元素后显示你的窗体,你也可以使用下面的代码,

代码语言:javascript
运行
复制
$(window).load(function () {
  $('#your_form_id').show();
});

除此之外,如果您想根据所单击的按钮在特定的url上提交表单,那么您应该使用

代码语言:javascript
运行
复制
<input type="button" value="Go" name="Go" id="go"/>

而不是,

代码语言:javascript
运行
复制
<input type="submit" value="Go" name="Go" id="go"/>

因为如果您使用<input type ="submit"...../>,那么您的表单将根据您的表单action值提交。因此,如果你想提交你的表单到一个特定的url,那么使用按钮点击功能。请看下面的示例:

代码语言:javascript
运行
复制
<form action="to_some_url" id="someForm">
    <input type="button" value="Go" name="Go" id="goButton"/>
    <input type="submit" value="Go" name="Go" id="go"/>
</form>

<script>
$('#goButton').click(function(){
    $("#someForm").action= "another_url";
    $("#someForm").submit();
});
</script>

在这里,<input type="submit"..../>提交表单to_some_url<input type="button"...../>将表单提交给another_url。如果你没有得到你的答案,请告诉我。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38429593

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档