/ / Wysyłanie żądania Ajax - php, jquery, ajax

Zgłaszanie żądań Ajax - php, jquery, ajax

Przepraszam za mój zły angielski :)

Robię plik php z żądaniem ajax. Odpowiedź jsona jest w formacie., Ale w niektórych przypadkach może być przekierowana. W tym przypadku chcę przekierowania strony.

Czy mógłbyś mi pomóc. Dzięki.

Przykładowy plik PHP:

<?php
$status = $_POST["status"];

if($status == "a"){
// return json response
}else{
echo "<form action="http://www.url.com">..</form><script type="text/javascript">form.submit();</script>";
}
?>

Przykład pliku JS:

$.ajax({
type: "POST",
url: "http://www.my_php_file.com"
});

Odpowiedzi:

-1 dla odpowiedzi nr 1

Musisz sprawdzić, czy dane odpowiedzi są poprawne JSON:

$.ajax({
type: "POST",
url: "http://www.my_php_file.com",
success: checkAJAX
});

function checkAJAX(data)
{
var response = $.parseJSON(data);
if(typeof response === "object")
{
}
else
{
// If the AJAX response is not JSON, append the HTML to the document
$("body").append(data);
}
}

1 dla odpowiedzi nr 2

Spróbuj tego.

url: "http://www.my_php_file.com",
success: function(data) {
document.location.href="YouNewPage.php";
}

1 dla odpowiedzi nr 3

Użyj funkcji powodzenia https://api.jquery.com/jQuery.ajax/

$.ajax({
type: "POST",
url: "http://www.my_php_file.com"
data: { status : statusVar },
success: function(response){
if (response.status == "a"){
$( "#results" ).append( response);
}else{
window.location = "http://www.url.com"
}
});
});

-1 dla odpowiedzi № 4

Zwróć html, który chcesz echo jako JSON:

if($status == "a"){
// return json response
} else {
echo json_encode(array("redirect" => "<form action="http://www.url.com">..</form><script type="text/javascript">form.submit();</script>"));
}

I zaznacz redirect w odpowiedzi ajax:

$.ajax({
type: "POST",
dataType: "json",
url: "http://www.my_php_file.com",
success: function(data) {
if(typeof data.redirect !== "undefined") {
$("body").append(data.redirect);
}
}
});

Tylko dwa przypomnienia, nie będzie przekierowania, jeśli żądanie nie powiedzie się (nie fail callback) i zakładam, że Twoja zwykła odpowiedź JSON nie ma atrybutu redirect.