IT

PHP 실행 경로에서 오류를 반환합니다.에이잭스?

itgroup 2023. 2. 14. 20:09
반응형

PHP 실행 경로에서 오류를 반환합니다.에이잭스?

PHP 스크립트가 어딘가에서 실패했을 때 PHP가 AJAX 에러 코드를 반환하도록 하는 방법이 있습니까?튜토리얼에 따라 이것을 PHP에 입력했습니다.

$return['error'] = true;$return['msg'] = "DB에 연결할 수 없습니다";

JSON 데이터라는 걸 알기 전까지 모든 게 괜찮았어요표준 $_POST를 사용하여 오류를 반환하고 HTML 데이터를 반환하는 방법이 있습니까(예: jQuery의 AJAX를 트리거함).error:이벤트?

jQuery에 대해서는 잘 모르지만 성공과 실패(HTTP 200 OK vs HTTP!= 200) Ajax 요청을 구별하는 경우 PHP 스크립트가 200이 아닌 HTTP 코드로 응답하기를 원할 수 있습니다.

if ($everything_is_ok)
    {
        header('Content-Type: application/json');
        print json_encode($result);
    }
else
    {
        header('HTTP/1.1 500 Internal Server Booboo');
        header('Content-Type: application/json; charset=UTF-8');
        die(json_encode(array('message' => 'ERROR', 'code' => 1337)));
    }
$return = array();
$return['msg'] = "Could not connect to DB";

if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH']  == 'XMLHttpRequest')
{
    header('Cache-Control: no-cache, must-revalidate');
    header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
    header('Content-type: application/json');
    die(json_encode($return));
}

이거 한번 써보세요.도움이 됐으면 좋겠다.

<!-- This is index.php --->
<html>
        <head>
            <script src="js/jquery.js" type="text/javascript"></script><!-- link to jQuery -->
            <script language="javascript"> 
            $(document).ready(function () {
                $('input#send').click(function(){
                    /* Empty div#error and div#result incase they contain info from the last submission */
                    $('#error').empty('');
                    $('#result').empty('');
                    /* Client-side validation */
                    var name = $("input#name").val();
                    var age = $("input#age").val();
                    if (name==''){
                        alert('Insert your name.');
                    }
                    else if (age==''){
                        alert('Insert your age.');
                    } else { 
                        var params = 'name=' + name + '&age=' + age;   
                        $.ajax({        
                             url:'b.php',        
                             type:'post',                 
                             dataType:'html',            
                             data:params,
                             cache: false,            
                             success:data     
                             }); 
                        function data (html) {
                            var $html = $( html ); // create DOM elements in a jQuery object
                            /* Return errors from 'b.php' */
                            $html.filter('#err').appendTo("#error");
                            /* Return valid Post */
                            $html.filter('#res').appendTo("#result");
                            /* Clear name input */
                            $('input#name').val('');
                            /* Clear age input */
                            $('input#age').val('');
                        }
                    }
                }); 
            }); 
            </script>
            <style type='text/css'>
                #error{
                    color:maroon;
                    font-weight:bold;
                }
                #result{
                    color:green;
                    font-weight:bold;
                }
            </style>
        </head>
        <body>
            <div id="error"></div><!-- View Errors -->
            <div id="result"></div><!-- View valid Post -->
            <input type='text' name='name' id="name" value='' /><br/ >
            <input type='text' name='age' id="age" value='' /><br/ >
            <input type='submit' name='send' id="send" value='Send' />
        </body>

<?php
/* This is b.php */
if(($_POST['name']=='')||($_POST['age']=='')){
    $error = '<div id="err">Error: Fill in ALL fields.</div>';
} elseif(is_numeric($_POST['name'])){
    $error = '<div id="err">Error: Name should NOT contain numbers.</div>';
} elseif(!is_numeric($_POST['age'])){
    $error = '<div id="err">Error: Age should ONLY contain numbers.</div>';
} else{
    $result = '<div id="res">Hi '.$_POST['name'].', you are '.$_POST['age'].' years old.</div>';
}
echo $error;
echo $result;
?>

PHP에서 AJAX로 데이터를 간단하게 전송하기 위해 Json 인코딩이나 키 값 쌍이 항상 필요한 것은 아닙니다.스트링 핸들링으로 간단하게 할 수 있습니다.

이 기능을 설명하는 샘플코드는 다음과 같습니다.


$sqli = "SELECT email FROM WHERE email = ' . mysqli _ real _ string _ string , $email )" "그리고 비밀번호 = ' . mysqli _ real _ string 、 $pass ) " ;
$result = mysqli_mysqli,mysqli,messages,$messages);
$row=mysqli_mysqli_rowsqlyresult);

$row_cnt = mysqli_num_rows(결과);
$s_email = $row[0];

($row_cnt == 1)의 경우,$response="성공";} 기타 {$response = "비활성 자격 증명";}
$syslog->close();
$_SESSION["email"]= $s_email;에코 $response;

이 코드는 '성공' 응답이 php 코드를 호출하는 ajax로 반환되는 방법을 보여줍니다.또한 ajax에서는 응답을 검색하기 위해 다음 작업을 수행할 수 있습니다.


$.ajax({ 유형: 'POST',),data: {email: $('#email').valvalval 비밀번호: $('#pass').val()}url : '삭제.php',성공: 함수(데이터) {if(data == '성공'){//php에서 에코된 값을 ajax의 데이터 변수에 저장할 수 있습니다.window.location.slocation.slocation';
}그렇지 않으면 {경보(데이터);
}},오류: 함수( xhr ) {alert(에러);
}});

위의 개념을 확장하여 MULTIPLE VALUES를 반환할 수도 있습니다.이 메서드를 사용하면 데이터를 문자열 형식으로 PHP에서 AJAX로 간단하게 전송할 수 있습니다.

php에서 ajax에 대한 응답으로 전송해야 하는 모든 것을 고유한 분리기로 구분하여 에코하는 간단한 단계를 따라야 합니다.


echo $response.#;echo $email.#;echo $password.#;"Hello"를 울립니다.#;에코 "세계";

그러면 위의 예시와 같이 Ajax의 변수 데이터를 간단히 검색할 수 있으며 다음과 같은 간단한 함수를 사용할 수 있습니다.


var res = data.timeout#");

데이터가 Ajax 내의 변수가 됩니다.res 배열은 js 내에서 필요한 용도로 사용할 수 있습니다.

언급URL : https://stackoverflow.com/questions/4417690/return-errors-from-php-run-via-ajax

반응형