如何使用数据类型为html的Ajax表单返回正确的php错误并在同一页面中处理php代码?

时间:2014-02-06 15:22:20

标签: jquery ajax forms

我知道已经多次回答了这个问题(参见例如this post),并且尝试了我在SO和wlsewhere上看到的所有建议的解决方案,有用。

我尝试使用jquery ajax提交表单而不是对页面进行编码。我不是使用JavaScript,但认为找出如何做到这一点是值得的。该页面已经有jquery,并且尝试使用JavaScript(而不是jquery)处理一个帖子表单会产生错误500,所以我决定找出一个jquery解决方案。

一切正常。除了我不能用ajax返回正确的php错误。 问题可能是处理请求服务器端的php代码在同一页面上,所以我不能添加json数据类型并且必须转到html。我试图将所有内容放在一个单独的脚本中,但我似乎无法使其工作。

代码:

    //this happens after the dom is loaded if the form is clicked.

            $.ajax({
                url: '', // form action url is the same
                type: 'POST', 
                dataType: 'html', //json gives error anyhow
                data: $(this).serialize(),
                beforeSend: function() {
                    message.fadeOut();
                    submit.html('Sending...'); 
                },
    //here the problem starts: on success of the ajax call, how do I track the php being echoed? 
    success: function(x){
        if(x == '1'){               
//the submit button says error                   
                                    submit.html('Error'); 


       }else{
//the submit button goes back to normal 


                                    submit.html('Send'); 
       }
    },
                error: function(e) {
                    //if there's an ajax problem just alert.
                }
            });

我在 php (同一页面)中的内容是这样的(以下内容不是真正的代码,只是一个随机的例子):< / p>

if( isset( $_SERVER['HTTP_X_REQUESTED_WITH'] ) ){
$foo = $_POST["foo"];
if(empty($foo)){
$error ="1";
echo $error;

} //if not show no error etc etc etc
}

即使$ foo为空,也会发生错误消息。 我尝试将echo json_encode (array( //etc )); exit;datatype:'json',移动到另一个文件中,但仍然无法正确显示错误。

总而言之,我认为我没有尝试过任何事情。任何有关如何解决这个问题的提示都将受到高度赞赏。我当然不是一名JavaScript专家,并且已经在这方面坚持了一段时间。

0 个答案:

没有答案