Как получить ответы от php на jquery ajax

Привет я пытаюсь повторить определенные сообщения из кода PHP обратно на мой AJAX. Но обычно у меня было бы только одно эхо-сообщение, но в этом случае у меня 2. Но я понятия не имею, как назначить каждое эхо-сообщение одному .html()

$("#finish").submit(function(){
    $.ajax({
        type:"GET",
        url:"checkFinish.php",
        data: $("#finishProj").serialize(),
        success: function(data){
            $("#add_sucess").html();
            $("#add_err").html();
        }
    }
});


if(!empty($mile1) && $mile1Pay == 'unPaid'){
        $error = 'Payment Not Completed';
        echo $error;
}
if(!empty($mile2) && $mile2Pay == 'unPaid'){
        $error = 'Payment Not Completed';
        echo $error;
}
if(!empty($mile3) && $mile3Pay == 'unPaid'){
        $error = 'Payment Not Completed';
        echo $error;
}

if(empty($error)){
  $success = "Success";
 echo $success;
}

Я хотел бы мой echo $error зайти внутрь $("#add_err").html(); а также echo $success быть в $("#add_sucess").html(); Как мне это указать? Потому что обычно, если у меня есть только одна вещь, я бы просто повторил $("#add_sucess").html(data);

2 ответа

Решение

Я бы вернул объект JSON обратно в мой AJAX. Таким образом, я могу лучше разделить свои сообщения.

JavaScript

$("#finish").submit(function(){
    $.ajax({
        type:"GET",
        url:"checkFinish.php",
        dataType: "JSON",//ajax now expects an JSON object to be returned
        data: $("#finishProj").serialize(),
        success: function(data){  
            //now that data is a JSON object, you can call the properties via data.prop              
            $("#add_sucess").html(data.success);
            $("#add_err").html(data.error);
        }
    }
});

PHP

if(!empty($mile1) && $mile1Pay == 'unPaid'){
        $error = 'Payment Not Completed';
}
if(!empty($mile2) && $mile2Pay == 'unPaid'){
        $error = 'Payment Not Completed';

}
if(!empty($mile3) && $mile3Pay == 'unPaid'){
        $error = 'Payment Not Completed';           
}    
if(empty($error)){
  $success = "Success";   
}

echo json_encode(array("error" => $error, "success" => $success));//json_encode an associative array and echo it back to request

exit();

Просто убедитесь, что у вас есть $success а также $error определено ранее, иначе вы, вероятно, получите ошибку.

Пройти flag из success: 1 для успеха и error: 0 за ошибку со стороны сервера. И при успехе ajax вы можете определить ответ, проверив data.res 1 или 0. Например:

На сервере:

if($id > 0 )  // for success
{
  // do other stuff
  $data['res'] = 1 ; 
}
else// for error
{
  // do other stuff
  $data['res'] = 0 ; 
}
echo $json_encode($data);

На стороне клиента:

success: function(data){
        if(data.res==1)
         {
           $("#add_sucess").html();// add success message
         }
       else
       {
             $("#add_err").html();// add error message
       }

    }

Примечание: - Не забудьте использовать dataType: "json", в вашем вызове Ajax.

Обновление: - Если вы устанавливаете string в успехе, чем установить success message или ошибка на error message, так что вы проверите с EMPTY проверить на стороне клиента, как:

if(data.success_msg != "")
{
$("#add_sucess").html(data.success_msg);// add success message
} 
else
{
$("#add_err").html(data.error_msg);// add error message
}
Другие вопросы по тегам