【问题标题】:Passing variable with jQuery AJAX not working in Firefox and Safari, works in Chrome使用 jQuery AJAX 传递变量在 Firefox 和 Safari 中不起作用,在 Chrome 中起作用
【发布时间】:2014-04-17 04:37:24
【问题描述】:

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 中运行良好。

【问题讨论】:

  • 查看源码时看到的wall_id是否正确?
  • @Barmar 是的!我看到了正确的wall_id
  • 在发送 ajax 调用时提醒 wall_id
  • @EhsanSajjad,这是为了什么?只是为了检查?那我想没必要,因为我可以确认 wall_id 是正确的。
  • 你的 print_r($increment_downloads) 在执行命令之前说了什么?

标签: php jquery ajax google-chrome firefox


【解决方案1】:

var wall_id 的值周围缺少引号

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

应该是

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

【讨论】:

    【解决方案2】:

    改变你的 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'];
    

    如果你得到正确的价值,请告诉我

    【讨论】:

    • 还有这一行 var wall_id = ;到 var wall_id = '';
    • 我的想法是你并不能真正将 php 值分配给你的 javascript 变量。
    • 我能想到。我已将beforeSend:function({$('.body').html(wall_id);} 添加到我的代码中,它会输出正确的wall_id
    • 您也应该练习使用大多数浏览器的控制台来映射导致脚本失败的原因。像 Google C 和 firefox 这样的浏览器都有这个工具。只需按 F12 并转到控制台选项卡,看看到底出了什么问题。
    • 如果您能够正确放置变量,请编辑您的 php 脚本并输入此 echo $_GET['wall_id'];如果您仍然无法获得值,您应该能够使用我提供的代码以正确的 ID 看到警报。检查您的网址是否正确。
    猜你喜欢
    • 2013-01-04
    • 2012-01-16
    • 2018-04-20
    • 1970-01-01
    • 2014-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多