Saya mengembalikan "true"/"false" (teks) dari PHP ke javascript melalui AJAX,
tetapi kondisi JAVASCRIPT IF saya tampaknya tidak berjalan meskipun kondisinya benar.

Javascript

var request = $.ajax({
type: "POST",
dataType: "text",
url: "",
data: { 
    'clientSecret': clientSecret,
    'oauthCode':oauthCode   
},
});

request.done(function(msg) {

    alert(msg);
    if(msg=="false"){       <----- DOES NOT EXECUTE
          //do stuff
    }



});

request.fail(function(jqXHR, textStatus) {
  alert( "Request failed: " + textStatus );
});

PHP

if(checkData($key,$oauthCode)==true){
        header("Content-Type: text/plain");
        echo "true"; 
        }
else{
        header("Content-Type: text/plain");
        echo "false";
        }

Javascript berhasil memperingatkan "salah",

enter image description here

Tetapi kondisi if tidak pernah dieksekusi. Apakah ada yang salah dengan tipe data yang dikembalikan atau?
Apa tepatnya yang saya lewatkan di sini?

1
Charindu Edirisooriya 10 November 2017, 01:14

1 menjawab

Jawaban Terbaik

Sekedar saran, karena saya sudah mulai mengerjakan alternatif ini untuk pertanyaan Anda saat Anda mengetahui masalahnya.

Saya tidak menyarankan Anda untuk bekerja dengan header untuk tugas-tugas seperti itu. Mereka masuk akal untuk keluaran sebelumnya, seperti yang Anda lihat. Anda dapat menggunakan pendekatan json (dataType: 'json') - seperti yang disarankan oleh @charlietfl, atau bekerja dengan dataType = 'html'.

Dengan json akan terlihat seperti ini:

Index.php

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
        <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=yes" />
        <meta charset="UTF-8" />
        <!-- The above 3 meta tags must come first in the head -->

        <title>Test</title>

        <!-- jQuery -->
        <script src="https://code.jquery.com/jquery-3.2.1.min.js" type="text/javascript" integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4=" crossorigin="anonymous"></script>

        <script type="text/javascript">
            function startTestScript() {
                var clientSecret = $('#clientSecret').val();
                var oauthCode = $('#oauthCode').val();

                var ajax = $.ajax({
                    method: 'post',
                    dataType: 'json',
                    url: 'checkOauth.php',
                    data: {
                        'clientSecret': clientSecret,
                        'oauthCode': oauthCode
                    }
                });
                ajax.done(function (response, textStatus, jqXHR) {
                    if (response === true) {
                        alert('Response is ' + response + '. COOL!');
                    } else {
                        alert('Response is ' + response + '. UPS!');
                    }
                });
                ajax.fail(function (jqXHR, textStatus, errorThrown) {
                    alert('Request failed: ' + textStatus + '\n' + errorThrown);
                });
                ajax.always(function (response, textStatus, jqXHR) {
                    // alert('Finished executing this cool script.');
                });
            }
        </script>

        <style type="text/css">
            body {
                padding-top: 30px;
                text-align: center;
            }
            button {
                padding: 10px;
                background-color: #8daf15;
                color: #fff;
                border: none;
            }
        </style>
    </head>
    <body>

        <div>
            <label for="clientSecret">Client secret (int)</label>
            <input type="text" id="clientSecret" name="clientSecret" value="123">

            <br/><br/>

            <label for="oauthCode">OAuth code (int)</label>
            <input type="text" id="oauthCode" name="oauthCode" value="123">

            <br/><br/>

            <button type="button" name="testButton" onclick="startTestScript();">
                Start ajax
            </button>
        </div>

    </body>
</html>

CheckOauth.php

<?php

/**
 * Check data.
 * 
 * @param mixed $value1
 * @param mixed $value2
 * @return TRUE if values are equal, FALSE otherwise.
 */
function checkData($value1, $value2) {
    return intval($value1) === intval($value2);
}

// Fetch posted values.
$clientSecret = isset($_POST['clientSecret']) ? $_POST['clientSecret'] : 0;
$oauthCode = isset($_POST['oauthCode']) ? $_POST['oauthCode'] : 0;

// Check data.
$dataIsValid = checkData($clientSecret, $oauthCode);

// Output the JSON-encoded result of checking data.
echo json_encode($dataIsValid);
0
user7941334user7941334 9 November 2017, 23:17