Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.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
AJAX提交到PHP在preventDefault()之后仍在加载页面_Php_Ajax_Jquery - Fatal编程技术网

AJAX提交到PHP在preventDefault()之后仍在加载页面

AJAX提交到PHP在preventDefault()之后仍在加载页面,php,ajax,jquery,Php,Ajax,Jquery,我有一个网页,我正在使用.ajax将变量发送到php脚本。php页面正在加载到浏览器中,就像我正在导航到它一样。脚本正在正确加载数据,因此我的问题是停止导航并将用户保留在原始页面上。我的表格代码如下: echo "<form method='post' action='addTask.php' id='myform'>\n"; echo "<input name='addtask' id='addtask' maxlength='64'/><br/>\n";

我有一个网页,我正在使用.ajax将变量发送到php脚本。php页面正在加载到浏览器中,就像我正在导航到它一样。脚本正在正确加载数据,因此我的问题是停止导航并将用户保留在原始页面上。我的表格代码如下:

echo "<form method='post' action='addTask.php' id='myform'>\n";
echo "<input name='addtask' id='addtask' maxlength='64'/><br/>\n";
echo "<input type='submit' name='submit' id='submit' value='Add Task'/>\n";
echo "</form>\n";
我尝试过:e.preventDefault()、e.stopPropagation()并返回false。感谢您的帮助

        $("#submit").click(function(e){
        e.preventDefault();
        $.ajax({
            type: "POST",
            url: "addtask.php",
            data: { }
        })
        .done(function() {
            alert( "success" );
        })
        .fail(function() {
            alert( "error" );
        });


尝试防止“提交”按钮出现默认设置:

$('input#submit').click(function(e){
    e.preventDefault();
    //submit your form
});

通过在ajax调用后返回false,我成功地阻止了表单提交

$(function () {
    $('#myform').submit(function (e) {
        $.ajax({
            url: 'addTask.php',
            type: 'POST',
            data: {},
            success: alert("Success")
        });
        return false;
    });
});

编辑: 上面的代码演示了
返回false
如何防止表单提交。然而,正如忧郁的企鹅所提到的,
成功
应该是一种功能。另外,由于调用在JSFIDLE上永远不会成功,我添加了
complete

$(function () {
    $('#myform').submit(function (e) {
        $.ajax({
            url: 'addTask.php',
            type: 'POST',
            data: {},
            success: function() {alert("Success");},
            complete: function() {alert("Completed");}
        });
        return false;
    });
});

您需要摆脱
submit
调用,这是触发重定向行为的原因警报需要在函数中。。。我通常使用
e.preventDefault()。不确定是否有区别。^^^^他说了什么,使用done()会更好。你的代码工作正常,问题一定在别处。您是否包括jQuery?表单是动态添加到页面的吗?你的评论帮我弄明白了。我有//它工作的所有代码。非常感谢。一旦我提出了阅读问题,它说OP已经试过了?或者,至少在表单提交上,哪个主意比这个好得多?什么?这是一个完全不同的函数“这是选择提交按钮”``这与他尝试过的不同,他也删除了从提交处理器到点击处理程序的下级调用,在功能上被降级,它会导致他的提交处理程序停止工作,而不会将所有提交处理程序代码都移动到此事件处理程序中,此时我怀疑他会遇到相同的问题,因为真正的问题在其他地方。这到底有多不同?它与OP的代码有什么不同?我在ajax调用后添加了
return false
,它仍然在服务器上加载addTask.php,即使返回false也是如此。我看到它在JSFIDLE中工作,但我的live版本仍然不能正常工作。这与表单上的action标记有关吗?他可能只是随机选择了一个答案,问题是他从来没有在执行javascript的地方包含javascript。如果您阻止默认表单提交,action属性应该无关紧要。但是在表单标记中也不需要它,因为它已经在ajax调用中了。
$(function () {
    $('#myform').submit(function (e) {
        $.ajax({
            url: 'addTask.php',
            type: 'POST',
            data: {},
            success: alert("Success")
        });
        return false;
    });
});
$(function () {
    $('#myform').submit(function (e) {
        $.ajax({
            url: 'addTask.php',
            type: 'POST',
            data: {},
            success: function() {alert("Success");},
            complete: function() {alert("Completed");}
        });
        return false;
    });
});