Ajax成功消息无效

时间:2015-04-20 10:29:40

标签: javascript php jquery ajax

我想在没有刷新页面的情况下提交表单并在表单下显示成功/错误消息,也是在成功重置表单的情况下。但我想,我在ajax代码中做错了,php工作得很好。 Ajax的:

$("#usignupform").validate({
    submitHandler:function() {
        var $form = $(form),
        $messageSuccess = $('#mesSuccess'),
        $messageError = $('#mesError');
        $.ajax({
            url: "investor-invite.php",
            type: "POST",
            data: $(this).serialize(),
            complete: function(data) {
                if (data.status == 'success') {
                    $messageSuccess.removeClass('hidden');
                    $messageError.addClass('hidden');

                    // Reset Form
                    $form.reset();

                    return;

                } else {
                    $messageError.removeClass('hidden');
                    $messageSuccess.addClass('hidden');
                }
            }
        });
        return false;
    }
});

PHP:

function NewUser(){ 
    $data = mysql_query($query)or die(mysql_error()); 

    if($data){
        $response_array['status'] = 'success';  
    } else {
        $response_array['status'] = 'error';  
    }
}
if(isset($_POST['submit'])){ 
    NewUser();
    }

HTML:

<form>
    --all fields--

    <button type="submit" name="submit" id="submitButton">
    Request Invite</button>
    <div class="alert alert-success hidden" id="mesSuccess">
        <strong>Success!</strong> Your message has been sent to us.
    </div>
    <div class="alert alert-danger hidden" id="mesError">
        <strong>Error!</strong> There was an error sending your message.
    </div>      
</form>

4 个答案:

答案 0 :(得分:1)

你需要在php页面上回显内容然后这将返回成功消息。如果在php文件或任何目标文件中存在html或某些打印数据,则Ajax调用将获得响应。

试试这个

    function NewUser(){ 
         $data = mysqli_query($query)or die(mysql_error()); 

         if($data){
            $response_array['status'] = 'success';  
               }else {
            $response_array['status'] = 'error';  
          }
return $response_array;
        }
    $data=NewUser();
    echo json_encode($data);

并更新ajax函数

$("#usignupform").validate({
                  submitHandler:function() {
                  var $form = $(form),
                   $messageSuccess = $('#mesSuccess'),
                   $messageError = $('#mesError');
             $.ajax({
                   url: "investor-invite.php",
                   type: "POST",
                   data: $(this).serialize(),
                    dataType: 'json',                  //add this to get the json response
                   complete: function(data) {
                        if (data.status == 'success') {

                        $messageSuccess.removeClass('hidden');
                        $messageError.addClass('hidden');

                        // Reset Form
                        $form.reset();


                    return;

                } else {

                    $messageError.removeClass('hidden');
                    $messageSuccess.addClass('hidden');
                }
            }
  });
  return false;
}
});

<强>更新 请从您的代码中删除已删除的mysql_ *并使用mysqli_*pdo个查询

答案 1 :(得分:0)

其中是print语句和JSON标题

<?PHP
header('Content-Type: application/json');
echo json_encode($data);

答案 2 :(得分:0)

试试这个,

 $.ajax({
                type: "post",
                url : "ajax.php",
                dataType: 'json',
                data:{ name : name,claass : claass,mobile : mobile},
                success : function(data){
                    alert("success");
                }
            },"json");

在php中,

$arr= ['fname'=>$name,'classs'=>$class,'mobile'=>$mobile];
echo json_encode($arr);

注意:尝试使用您的帖子变量。和数组变量,我只是coppy粘贴我的代码快速回答!!!!!!

答案 3 :(得分:0)

而不是使用完整,使用成功。如果你想能够直接引用名称值对,那么你需要解析返回到json的数据,因为你的php目前只将数据作为字符串发回。

$.ajax({url:'investor-invite.php',
 type:'POST',
 success: function checkData(data){
  dataObj = JSON.parse(data);
  if(dataObj.status == success){
   ...
  }
  else{
   ...
  }
 }
});