使用jQueryAJAX传递变量在Firefox和Safari中不起作用,在Chrome中起作用


Passing variable with jQuery AJAX not working in Firefox and Safari, works in Chrome

html

<li><a class="download-link" href="<?php echo $path_data;?>">Download</a></li>

ajax

$(function(){
        $('.download-link').click(function() {
            var wall_id = <?php echo $wall_id;?>;   //store current wall id
            $.ajax({
                type    : 'GET',
                url     : 'functionality/php/download_count.php',
                data    : { wall_id : wall_id }
            });         //ajax end
        });             //live end
    });                 //function end

php(download_count.php

<?php
    $wall_id = preg_replace("#[^0-9]#", "", $_GET['wall_id']);
    //increment download count query
    $increment_downloads = $connectDB->prepare("UPDATE database.table SET
                          downloads = downloads + 1 WHERE wall_id = ?");
        $increment_downloads->bind_param('i', $wall_id);
        $increment_downloads->execute();
    ?>

单击Download链接时,我正在尝试更新download count。但是表中的下载量并没有增加。不确定问题出在哪里。需要帮助。

更新:以上代码不适用于Firefox和Safari,但适用于Chrome。

您在var wall_id 的值周围缺少引号

var wall_id = <?php echo $wall_id;?>;  

应该是

 var wall_id = "<?php echo $wall_id;?>"; 

更改您的ajax

    $('.download-link').click(function(){
        var wall_id = <?php echo $wall_id;?>;   //store current wall id
        $.ajax({
            type    : 'GET',
            url     : 'functionality/php/download_count.php',
            data    : { wall_id : wall_id }
        });     //ajax end
    }); 

    $.get( "functionality/php/download_count.php", { wall_id : wall_id } )
        .done(function( data ) {
        alert( data );
    });

然后将其添加到php脚本的末尾

    echo $_GET['wall_id'];

然后让我知道你是否得到了正确的值