AJAX:如何从php数据成功或错误消息中比较ajax中的变量

时间:2017-09-27 11:19:53

标签: php jquery ajax

我在stackoverflow.com上尝试过很多例子 jQuery ajax success error

我从这个考试中选择代码 enter image description here

但总是给我错误。

每当我运行下面的代码如果ajax代码错误然后ajax显示错误消息但是当php有错误代码时ajax总是显示成功:函数(数据)代码。

因为我知道 data.status =='成功' 没有从php进行比较所以我的代码会出错

我知道这个问题是重复但我看到stackoverflow的所有问题都没有解决我的问题所以我再次发布

请帮助

AJAX代码

 $(document).ready(function () {
    $(function () {
        $('.contactf').submit(function (e) {
            e.preventDefault();
            if (!contactvalid())
                return false;
            $(this).find(":submit").prop("disabled", true);
            $('#gif').css('display', 'block');
            var form = $(this);
            var post_url = 'contactmail1.php';
            var post_data = form.serialize();
            $.ajax({
                type: 'POST',
                url: post_url,
                data: post_data,
                success: function (data) {
                    if (data.status == 'success') {
                        alert(data);
                    } else if (data.status == 'error') {
                        alert(data);
                    }
                },
                error: function (data) {
                    alert('failed client side');
                }
            });
        });
    });
});

PHP

<?php

//
header('Content-type: application/json');

if ( $_SERVER[ 'REQUEST_METHOD' ] == 'POST' ) {

    require 'phpmailer/PHPMailerAutoload.php';
    $name = $_POST[ 'Name' ];
    $email = $_POST[ 'Email' ];
    $phone = $_POST[ 'number' ];
    $sub = $_POST[ 'contact_subject' ];
    $msg = $_POST[ 'Message' ];


    if ( !( isset( $_POST[ 'Name' ] )and isset( $_POST[ 'Email' ] )and isset( $_POST[ 'number' ] )and isset( $_POST[ 'contact_subject' ] )and isset( $_POST[ 'Message' ] ) ) ) {
        echo "Some Field is Blank";
    } else {


        $mail = new PHPMailer;

        $mail->setFrom( $email, $name );


        $mail->addAddress( 'mail@gmail.com', 'Inderjeet' );

        $mail->Subject = 'Mail from site';

        $mail->msgHTML( '<html><body><table border=0 width=554><tr><td colspan=2><p><b>Enquiry from Contact Page Thorsoncne.com</b><br><br></p></td></tr><tr><td colspan=2 class=text4>FORM submitted at ' . date( 'd F Y h:i:s A' ) . '<br></td></tr>   
<tr><td width=200 class=text3>Name :</td><td class=text3>' . $name . '</td></tr>   
<tr><td>Email Id :</td><td>' . $email . '</td></tr>   
<tr><td>Phone/Mobile :</td><td>' . $phone . '</td></tr>   
<tr><td>Subject :</td><td>' . $sub . '</td></tr>   
<tr><td>Message :</td><td>' . $msg . '</td></tr>   
</table></body></html>' );

        if ( !$mail->send() ) {


            $response_array['status'] = 'failed';
            echo "Mailer Error: " . $mail->ErrorInfo;
            echo json_encode($response_array);

        } else {
            $response_array['status'] = 'success';
            echo json_encode($response_array);
            echo "Query Submitted";

        }
    }
}

1 个答案:

答案 0 :(得分:1)

更改您的Java脚本代码 - 添加dataType: "json"

$(document).ready(function() {
  $(function() {
    $('.contactf').submit(function(e) {
      e.preventDefault();
      if (!contactvalid()) return false;
      $(this).find(":submit").prop("disabled", true);
      $('#gif').css('display', 'block');
      var form = $(this);
      var post_url = 'contactmail1.php';
      var post_data = form.serialize();
      $.ajax({
        type: 'POST',
        url: post_url,
        dataType: "json",
        data: post_data,
        success: function(data) {
          if (data.status == 'success') {
            alert(data);
          } else if (data.status == 'error') {
            alert(data);
          }
        },
        error: function(data) {
          alert('failed client side');
        }
      });
    });
  });
});

在echo echo "Query Submitted";

之后删除json_encode($response_array);