函数变量从HTML变为JS时会发生变化

时间:2018-04-13 20:00:54

标签: ajax laravel variables dynamic

enter image description here

enter image description here

所以我在laravel中的模型中构建这个jquery引导表,你可以看到它出现了相同的数字,但是当你点击它并将它发送到函数时,数字会出现1减去原始数字。有什么想法吗?

这是控制器:

        if($data) {
        for ($i = 0; $i<sizeof($data['data']); $i++) {
            $adsetid = $data['data'][$i]['adset_id'];
            $link = strval($adsetid);
           // dd($link);  
            if (!array_key_exists('actions', $data['data'][$i])) {
                $summary[$i] = array('results' => intval('0').' Leads',
                'cpr' => '$'.intval('0'),
                'reach' => intval($data['data'][$i]['reach']),
                'impressions' => intval($data['data'][$i]['impressions']),
                'spend' => "$".round(floatval($data['data'][$i]['spend']),2),
                'ctr' => round($data['data'][$i]['ctr'],6),
                'cpc' => round($data['data'][$i]['cpc'],6),
                'clicks' => intval($data['data'][$i]['clicks']),
                'account_id' => intval($data['data'][$i]['account_id']),
                'account_name' => $data['data'][$i]['account_name'],
                'adset_id' => '<a href="#" onclick="adminAjaxCall('.($link).')">'.intval($data['data'][$i]['adset_id']).'</a>',
                'ad_name' => $data['data'][$i]['ad_name'],
                'campaign_id' => intval($data['data'][$i]['campaign_id']),
                'campaign_name' => $data['data'][$i]['campaign_name']);
            }

和javscript:

function adminAjaxCall(value) {
console.log(value);
$("#high_charts_admin").hide();
$("#load").show();
$.ajax({
    type: 'GET',
    url: '/facebookadmin/',
    data: {
        adsetId: value
    },
    dataType: 'json',
    success: function (response) {
        $('#load').hide();
        $("#high_charts_admin").show();
        console.log("adminAjaxCallSuccess:");
        console.log(response);
        adminDrawHighCharts(response);
    },
    error: function(jqXHR, textStatus, errorThrown) { // What to do if we fail
        console.log(JSON.stringify(jqXHR));
        console.log("AJAX error: " + textStatus + ' : ' + errorThrown);
    }
});

}

1 个答案:

答案 0 :(得分:2)

我不完全确定为什么它只是减少了一个,但我尝试只是打开开发人员工具并将该数字分配给a = 23842710141990585的var并且它也是如此。然后a var为23842710141990584。

原来这个数字远远大于Javascript&#39; s MAX_SAFE_INTEGER

我建议你把它变成一个字符串。

你需要将$link包装在引号中,这会将它转换为字符串,就像@manian所指出的那样:

'adset_id' => '<a href="#" onclick="adminAjaxCall(\''.$link.'\')">'.intval($data['data'][$i]['adset_id']).'</a>'

编辑,回答\所做的评论:

escapes the next character。由于您发布的字符串包含在单引号中,因此在字符串中添加单引号自然会结束它。因此,为了实际打印单引号,请在其前面加上反斜杠:\'

在您的情况下,您需要将adminAjaxCall(123)中的数字转换为字符串。您可以通过在数字周围添加单引号或双引号来完成此操作:adminAjaxCall('123')。这就是我们所取得的成就 - 在数字周围添加了单引号。