think_user
think_user

Reputation: 393

how to pass ajax response value to another page?

I'm trying to send an AJAX response to a PHP file. Based on the response I would like to redirect to another page. If the response is success I would like to redirect to a 'thank you' page along with the parameter data.

How can I pass this transactionId to another page?

if ($result->success) 
{
    print_r("success!: " .$result->transaction->id);
} 
else if ($result->transaction) {
    print_r("Error processing transaction:");
    print_r("\n  code: " .$result->transaction->processorResponseCode);
    print_r("\n  text: " .$result->transaction->processorResponseText);
}
else 
{
    print_r("Validation errors: \n");
    print_r($result->errors->deepAll());
}
$('#paymentForm').submit(function() {
    var serializedData = $(this).serialize();
    $.post('card.php', serializedData, function(response) {
        // Log the response to the console
        console.log("Response: "+response);
        alert(response);

        if (response == "success") {
            window.location.href = 'http://www.google.com';
        }
    });
});
});

Upvotes: 2

Views: 5773

Answers (3)

Ashraful Islam
Ashraful Islam

Reputation: 935

change your php output from

if ($result->success) 
{
    print_r("success!: " .$result->transaction->id);
} 
else if ($result->transaction) {
    print_r("Error processing transaction:");
    print_r("\n  code: " .$result->transaction->processorResponseCode);
    print_r("\n  text: " .$result->transaction->processorResponseText);
}
else 
{
    print_r("Validation errors: \n");
    print_r($result->errors->deepAll());
}

to

if ($result->success) 
{
    echo json_encode(array('status'=>'success','id'=>$result->transaction->id));
} 
else if ($result->transaction) {
    echo json_encode(array('status'=>'error','code'=>$result->transaction->processorResponseCode, 'text'=> $result->transaction->processorResponseText)));
}
else 
{
   echo   json_encode(array('status'=>'error','text'=>$result->errors->deepAll()));

}

and change your js to the following

$('#paymentForm').submit(function() {
    var serializedData = $(this).serialize();
    $.post('card.php', serializedData, function(response) {
        // Log the response to the console
        console.log("Response: "+response);
        alert(response);
        var data= $.parseJSON(response);
        if (data.status == "success") {
            window.location.replace('http://www.google.com?id='+data.id)‌​;
        }else{
            alert('Operation Failed');
            if(data.code){
                console.log('response code: '+data.code);
            }
            console.log('response text: '+data.text);
        }
    });
});
});

Upvotes: 3

pirt
pirt

Reputation: 1213

You can send the response variables you'd like by incorporating them into a query on the redirect.

For instance if you wanted to pass on foo to your redirected php domain.com/bar.php:

var url = 'domain.com/bar.php?foo=' + foo
window.location.href = url;

And then on the PHP page, you can use this data:

$bits = parse_url($url);
parse_str($bits['query'], $query);
echo $query['foo']

Upvotes: 1

Jameson the dog
Jameson the dog

Reputation: 1806

looking at your php code - it never returns success, it will return success!: somthing so this condition if (response == "success") is never true

you could use

if(response.indexOf("success") == 0)

or change the response in the php file

Upvotes: 1

Related Questions