Возможно отправка данных неправильно?Отправка отправки формы в PHP, а затем во внешний API, и ответ говорит, что включенное поле отсутствует - PullRequest
0 голосов
/ 19 октября 2018

У меня есть форма, которую я хочу отправить во внешний API.Чтобы сделать это без получения перекрестной ошибки, я нашел способ передать данные из формы в файл PHP, а затем оттуда я могу сделать POST для внешнего API и вернуть ответ на мой файл клиента и прочитать содержимоеответ.

Однако я получаю 400 ошибок с сообщением «пароль отсутствует», когда пароль точно не отсутствует.Что-то не так с моим php или javascript, что приводит к неправильной отправке данных?Пожалуйста, дайте мне знать, если вы видите что-то не так.Я новичок в php.

Еще одна вещь, на которую стоит обратить внимание, это то, что когда я запускаю этот код, он все равно встречается с регистром success в JavaScript, а не с ошибкой.Что делает это очень странным.Ответ определенно не дает объект со свойствами, которые ожидаются.

ошибка выглядит следующим образом: "" jsonCode ": 402," message ":" 402 Отсутствует пароль "," requestID ":" arhwerhwarawtr"}

HTML-форма

<form action="hello.php" class="js-ajax-php-json" method="post" accept-charset="utf-8">
    <input type="hidden" id="name" name="name" value="johndoe">
    <input type="hidden" id="password" name="password" value="sfhsrtjsgargjk">
    <input type="text" id="id" name="id" value="" placeholder="username" />
    <input type="text" id="secret" name="secret" value="" placeholder="password" />
    <input type="submit" name="submit" value="Submit form"  />
</form>

php

<?php
if (is_ajax()) {
if (isset($_POST["action"]) && !empty($_POST["action"])) { //Checks if action value exists
    $action = $_POST["action"];
    switch($action) { //Switch case for value of action
    case "test": callAPI('POST','www.sample.com', $action); break;
    }
}
}

//Function to check if the request is an AJAX request
function is_ajax() {
return isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest';
}



function callAPI($method, $url, $data){
    $curl = curl_init();

    switch ($method){
        case "POST":
            curl_setopt($curl, CURLOPT_POST, 1);
            if ($data)
                curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
            break;
        case "PUT":
            curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "PUT");
            if ($data)
                curl_setopt($curl, CURLOPT_POSTFIELDS, $data);                              
            break;
        default:
            if ($data)
                $url = sprintf("%s?%s", $url, http_build_query($data));
    }

    // OPTIONS:
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_HTTPHEADER, array(
        'Content-Type: application/json',
    ));
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);

    // EXECUTE:
    $result = curl_exec($curl);
    if(!$result){die("Connection Failure");}
    curl_close($curl);
    $result["json"] = json_encode($result);
    echo json_encode($result);
    return $result;
}
?>

JavaScript:

$(document).ready(function(){
    $(".js-ajax-php-json").submit(function(){
        var data = {
        "action": "test"
        };
        data = $(this).serialize() + "&" + $.param(data);
        $.ajax({
            type: "POST",
            dataType: "json",
            url: "hello.php",
            data: data,
            success: function(data) {
                // manipulate response data
                // $(".the-return").html(
                // "First Value: " + data["username"] + "<br />Second Value: " + data["password"] + "<br />JSON: " + data["json"]
                // );

                console.log(data);
                // alert("Form submitted successfully.\nReturned json: " + data);
            }, error: function(data){
                alert("Form submitted unsuccessfully.\nReturned json: " + data.jsonCode + data.message);
            }
        });
        return false;
    });

});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...