LITguy
LITguy

Reputation: 623

JSON results into a variable and store in hidden input field

I wrote code below that is working perfectly for displaying the results of my sales tax calculation into a span tag. But, I am not understanding how to change the "total" value into a variable that I can work with.

<script type="text/javascript">
    function doStateTax(){
        var grandtotalX = $('#GRANDtotalprice').val();
        var statetaxX = $('#ddl').val();

        $.post('statetax.php',
        {statetaxX:statetaxX, grandtotalX:grandtotalX}, 
        function(data) {
        data = $.parseJSON(data);
        $('.products-placeholder').html(data.products);     
        $('.statetax-placeholder').html(data.statetax);     
        $('.total-placeholder').html(data.total);                               
        // ...
        });
        return false;
    };
</script>   

Currently, $('.total-placeholder').html(data.total); is successfully placing the total number into here:

<span class="total-placeholder"></span> 

but how would I make the (data.total) part become a variable? With help figuring this out, I can pass that variable into a hidden input field as a "value" and successfully give a proper total to Authorize.net

I tried this and id didn't work (see the testtotal part to see what I'm trying to accomplish)..

function(data) {
    data = $.parseJSON(data);
    $('.products-placeholder').html(data.products);     
    $('.statetax-placeholder').html(data.statetax);     
    $('.total-placeholder').html(data.total);       
    $testtotal = (data.total);                      
    // ...

Upvotes: 0

Views: 1975

Answers (3)

Tomer
Tomer

Reputation: 17930

If you want 'testotal' to be recognized outside the function scope, you need to define it outside the function, and then you can use it somewhere else:

 var $testtotal;
 function(data) {
                data = $.parseJSON(data);
                $('.products-placeholder').html(data.products);     
                $('.statetax-placeholder').html(data.statetax);     
                $('.total-placeholder').html(data.total); 
                $testtotal = (data.total);

EDIT:

The comments are becoming too long so i'll try and explain here:

variables defined in javascript cannot be accessed by PHP and vice versa, the only way PHP would know about your javascript variable is if you pass it that variable in an HTTP request (regular or ajax).

So if you want to pass the $testtotal variable to php you need to make an ajax request(or plain old HTTP request) and send the variable to the php script and then use $_GET/$_POST to retrieve it.

Hope that answers your question, if not then please edit your question so it'll be clearer.

Upvotes: 0

UltraInstinct
UltraInstinct

Reputation: 44444

If you are using a hidden field inside a form, you could do:

//inside $.post -> success handler.
$('.total-placeholder').html(data.total);
$('input[name=yourHiddenFieldName]', yourForm).val(data.total);

This will now be submitted along with the usual submit. Or if you want to access the data elsewhere:

var dataValue = $('input[name=yourHiddenFieldName]', yourForm).val();

Upvotes: 1

user1467267
user1467267

Reputation:

The "data" object you are calling can be used anywhere within the scope after you have a success call. Like this:

$.post('statetax.php',
{statetaxX:statetaxX, grandtotalX:grandtotalX}, 
function(data) {
    data = $.parseJSON(data);

    var total = data.total;
    var tax = data.total * 0.19;
});

return false;
};

Whenever you get an object back always try to see with an alert() or console.log() what it is.

alert(data); // This would return <object> or <undefined> or <a_value> etc.

After that try to delve deeper (when not "undefined").

alert(data.total); // <a_value>?

Upvotes: 0

Related Questions