Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.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
Php Ajax请求转到新页面而不是更新当前页面?_Php_Javascript_Jquery_Ajax - Fatal编程技术网

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

Php Ajax请求转到新页面而不是更新当前页面?,php,javascript,jquery,ajax,Php,Javascript,Jquery,Ajax,它以前工作过,我不记得做过任何改变。我有一个表单,它将信息发送到一个“正在处理”的php文件,应该会得到回复。相反,它只是转到“处理”php并在新页面上回显JSON数据。Jquery包含来自google的内容,表单页面和“流程”页面都在同一个目录中 $data = array( 'status' => $status, 'message' => $errorMsg ); echo json_encode($data); if ($status ==

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

$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; 


});  
})

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

我假设您的表单操作是heading process.php,并且您在提交时没有返回false

应该是这样的

<form name='myForm' action='nonjspage.php' method='post' onsubmit='return false;'></form>

如果错误仍然存在,那么它不是您的表单,而是javascript中的错误。根据您使用的浏览器,会有一个错误控制台

在firefox中,您进入菜单->web开发者->web控制台


打开此页面后,重新加载页面并再次按下“提交”按钮,它将为您提供有关javascript错误的信息。

解决此问题可能会有一些帮助

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

最好的做法是在函数顶部执行

preventDefault();

这将阻止表单提交,从而加载post页面,而不是执行ajax调用

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


干杯

我总是忘记检查网络控制台。它最终是一个不相关脚本中的错误,这就是为什么我没有看到它。它最终是一个不相关脚本中的错误,但感谢您提供的最佳实践。我会用它的。