У меня есть форма, которую я хочу отправить во внешний 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;
});
});