php - Ajax 请求转到新页面而不是更新当前页面?

标签 php javascript jquery ajax

它之前工作正常,我不记得有任何更改。我有一个表单,它将信息发送到一个“正在处理”的 php 文件,应该会得到回复。相反,它只是转到“处理”php 并在新页面上回显 JSON 数据。 Jquery 包含来自谷歌,表单页面和“处理”页面都在同一目录中。

$data = array(  
    'status' => $status,  
    'message' => $errorMsg  
);  

echo json_encode($data);

if ($status == "success"){
session_destroy();
}
exit();

所以这就是它在所有处理结束时所做的事情(确保数据良好并且所有工作正常)。这是使用的 javascript:

$(document).ready(function(){  
   $('#signupForm').submit(function(){
//various client side checks to keep form from submitting easy to see garbage

 if($(this).data('formstatus') !== 'submitting'){
   var responseMsg = $('#response');
    responseMsg.hide()  
               .addClass('response-waiting')  
               .text('Signing Up...')  
               .fadeIn(200);  



var dataString = //the data  
$.ajax({  
    type: "POST",  
    url: "process.php",  
    data: dataString,  
    success: function(data) { 


            var responseData = jQuery.parseJSON(data),  
                messageClass = '';  

            switch(responseData.status){  
                case 'error':  
                   messageClass = 'response-error';  
                break;  
                case 'success':  
                   messageClass = 'response-success';  
                break;  
            }  

            responseMsg.fadeOut(200,function(){  
                $(this).removeClass('response-waiting')  
                       .addClass(messageClass)  
                       .text(responseData.message)  
                       .fadeIn(200,function(){   
                           setTimeout(function(){  
                               responseMsg.fadeOut(200,function(){  
                                   $(this).removeClass(messageClass);  
                               });  
                           },5000);  
                        });  


             });  


        }
}); 
}

return false; 


});  
})

如果有什么我应该寻找的具体内容,请告诉我,我会更新。 qand 就像我说的,我(昨天)让它工作了,我不记得有什么改变,除了在顶部进行客户端检查,我知道这根本不重要。

最佳答案

一些事情可能有助于解决这个问题。

首先,建议不要使用 return false 来阻止通常的点击事件发生。

最好在函数顶部做

preventDefault();

参见 http://fuelyourcoding.com/jquery-events-stop-misusing-return-false/

这应该会阻止表单提交并因此加载帖子页面而不是执行 ajax 调用。

第二个问题是您有一个显然没有被命中的 return false 调用。无论如何,上面的修复都会阻止表单提交,但我猜你在开始和返回 false 之间的代码中有一个 javascript 错误。这将引发异常,因此永远不会调用 return false。一旦安装了上述修复程序并停止重定向,请检查浏览器中的控制台是否存在异常。

干杯

关于php - Ajax 请求转到新页面而不是更新当前页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9459229/

相关文章:

javascript - 如何在reactjs中动态添加属性到组件

滚动时 jQuery ui 对话框停留在底部

javascript - jQuery/JavaScript 函数不更新文本框

php - 插入表情符号时插入语句有效,但使用 Eloquent 时会抛出错误

php - SQLSTATE[HY000] [2002] 尝试将 Laravel 数据库连接到 Heroku 时连接被拒绝

php - 获取 MySQL 中 3 个类别的所有可能组合

javascript - 如何将另一个 SAP Cloud 项目资源包含到已部署的 SAPUI5 应用程序中?

javascript - 类型 'JestMatchers ' 上不存在属性

javascript - Webkit 仅在调整大小时应用动态加载的 css 样式(通过 ajax)

javascript - 仅在事件调用时加载 iframe