JSON结果变成一个变量并存储在隐藏的输入字段中

时间:2012-07-08 08:03:17

标签: json hidden-field

我在下面编写的代码非常适合将我的销售税计算结果显示在span标记中。但是,我不理解如何将“总”值更改为我可以使用的变量。

<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>   

目前,$('。total-placeholder')。html(data.total);成功将总数放入此处:

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

但是如何让(data.total)部分成为变量呢?通过帮助解决这个问题,我可以将该变量作为“值”传递给隐藏的输入字段,并成功地为Authorize.net提供合适的总数

我试过这个并且id不起作用(请参阅testtotal部分以了解我正在尝试完成的任务)..

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

3 个答案:

答案 0 :(得分:1)

如果您在表单中使用隐藏字段,则可以执行以下操作:

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

现在将与通常的提交一起提交。或者,如果您想访问其他地方的数据:

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

答案 1 :(得分:0)

如果您希望在函数范围之外识别'testotal',则需要在函数外部定义它,然后您可以在其他地方使用它:

 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);

修改

评论变得太长,所以我会在这里尝试解释:

PHP无法访问

javascript中定义的变量,反之亦然,PHP知道你的javascript变量的唯一方法就是在HTTP请求中传递该变量(常规或ajax)。

因此,如果你想将$testtotal变量传递给php,你需要发出ajax请求(或普通的旧HTTP请求)并将变量发送到php脚本然后使用$_GET/$_POST来检索它

希望能回答你的问题,如果没有,请编辑你的问题,以便更清楚。

答案 2 :(得分:0)

在您成功通话后,您呼叫的“数据”对象可以在范围内的任何位置使用。像这样:

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

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

return false;
};

每当你得到一个对象时,总是试着看一下alert()或console.log()它是什么。

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

之后尝试深入研究(当不是“未定义”时)。

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