Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/90.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 单击提交按钮';我不总是工作_Jquery_Html_Forms_Click_Submit Button - Fatal编程技术网

Jquery 单击提交按钮';我不总是工作

Jquery 单击提交按钮';我不总是工作,jquery,html,forms,click,submit-button,Jquery,Html,Forms,Click,Submit Button,我有一个带有文本框和提交按钮的表单 <div style="float:left; padding:20px;"> <form id="crate_input" method="get"> Create new crate: <input type="text" id="create"> <input id="subbutton" type="submit" value="Submit"> </form> <sel

我有一个带有文本框和提交按钮的表单

<div style="float:left; padding:20px;">
<form id="crate_input" method="get">
    Create new crate: <input type="text" id="create">
    <input id="subbutton" type="submit" value="Submit">
</form>
<select id="crates">
    <option id="choose" value="choose" selected>Choose a crate</option>
    <option id="default_crate" value="default_crate">default_crate</option>
</select>
</div>

但问题是,当我键入一个板条箱的名称并按下提交按钮时,它有时不会创建板条箱。它似乎刷新了页面,但还没有创建新的板条箱。有人知道这里出了什么问题吗?

问题是您没有停止默认表单提交

$('#crate_input').submit(function(){ return false; });

应该可以解决您的问题。

您不会阻止表单的正常提交,因此在
ajax
调用返回之前会重新加载页面:

$('#subbutton').click(function(event) {
    $.ajax({
      ...
    });
    return false;
});
另外,从
ajax
success
处理程序返回
也是毫无意义的,因为
1. - 按钮点击完成后执行良好

2. - 调用此处理程序的代码不需要任何返回值。

如果不知道“ajax/bagit_handler.php”的响应,将很难回答此问题。然而,我注意到以下几点

  • 您似乎在服务器上创建了一个板条箱,但您使用的是HTTP GET。不建议对影响服务器状态的操作使用GET

  • 响应数据类型以text/html形式给出。将响应HTML与$(this).attr(id)进行比较,我什么都不懂。 在该上下文中,这是指AJAX处理程序。 我不知道你到底想做什么

  • 最好在$('cratet_input').submit()上执行表单处理,而不是$('subbutton')。单击()


  • 如果可能,请添加一个JSFIDLE来说明您正在做什么。

    是的。这就是原因。我从没想过。谢谢非常感谢您提供的信息丰富的答案!这也解决了问题!
    $('#subbutton').click(function(event) {
        $.ajax({
          ...
        });
        return false;
    });