【问题标题】:Run php file through jquery link click通过jquery链接运行php文件点击
【发布时间】:2012-02-13 18:03:46
【问题描述】:

我无法让它工作,页面已经有其他 jquery 函数运行得很好,所以我知道 jquery 工作正常(jplayer 和lazyload 工作正常)

这是我的 javascript 函数:

<script type="text/javascript">
function upone() {
    $.get("upone.php");
    return false;
}
</script>

这是我的链接

<a href="#" onclick="upone();">Like</a>

我的 php 文件“upone.php 是:

<?php
include("include/config.php");
include("include/functions/import.php");

if(isset($_SESSION['USERID'])&&$_SESSION['USERID']>=0&&is_numeric($_SESSION['USERID']))
{
    $USERID=$_SESSION['USERID'];

    $query="INSERT INTO audio_like SET USERID='".mysql_real_escape_string($USERID)."'";
    $result=$conn->execute($query);
}

?>

如果我手动链接到 php 文件,它运行良好,单击链接也会导致页面刷新,并在页面中添加 #。有什么想法吗?

【问题讨论】:

  • 您在 firebug 或 JavaScript 控制台中看到了什么?
  • 我在 javascript 控制台中看到的唯一内容是由 google+ 按钮引起的持续错误,但删除它不会改变任何事情

标签: php javascript jquery html get


【解决方案1】:

编辑:误解了问题

使用下面的代码可以解决点击链接后页面刷新的问题。之前发生这种情况的原因是 onclick 属性没有返回 false,换句话说,这将是正确的代码:&lt;a href="#" onclick="return upone();"&gt;Like&lt;/a&gt;。下面的代码做同样的事情,但结构更好。

HTML:

<a id="like" href="#" >Like</a>

JS:

$("#like").click(function(){
   $.get("upone.php");
   return false;
});

【讨论】:

  • OP 没有说明任何关于显示结果的内容。 PHP 脚本看起来类似于 Stack Exchange upvote,它在服务器端执行操作而不向浏览器返回任何内容...
  • 它实际上只是为了运行一个后台脚本来进行投票,但即便如此,无论出于何种原因,这段代码都无法正常工作。 :s 编辑:以上评论是正确的
  • 在 Firebug 或 javascript 控制台中,您点击链接后是否在控制台中看到 ajax 请求?如果是这样,发生的错误是什么?最有可能的是,从页面到文件的路径不是“upone.php”,而是“/upone.php”或“/scripts/upone.php”之类的路径
  • 点击链接后我什么也没看到。但是,如果我点击 facebook like 或 g+ 按钮,我会看到它们运行。
  • 如果您没有看到它,请检查“网络”选项卡,它应该包含对“upone.php”的 AJAX 请求
【解决方案2】:

与其使用内联 javascript,不如尝试做这样的事情。

给“Like”链接一个类,例如:

<a href='#' class='likeLink'>Like</a>

使用以下内容代替您当前的部分:

<script>
    $(function() {
        $('.likeLink').click(function() {
            $.get('upone.php', function(data) {
                alert("Server Returned: " + data);
            });
            return false;
        });
    });
</script>

如果警报消息返回您对 PHP 页面的期望,您可以将其注释掉以用于生产。

顺便说一句,我很久以前就输入了这个,忘记了我正在处理它。抱歉,如果已经解决了。

【讨论】:

  • 感谢工作!谢谢你。我能问一下为什么这行得通,而另一种方式则行不通吗?
  • 我要指出的第一件事是,您应该尽最大努力将标记、样式和脚本彼此分开。通常在单独的文件中,例如用于样式的 CSS 文件、用于 javascript 的 JS 文件和用于标记的 HTML 等文件,并将其他文件包含在 head 标记中。这只是最佳实践。现在了解它的工作原理,使用 jQuery,你应该拥有所有相关的东西。
  • 到 onReady 函数 ( $(function() { ... } ) 内的事件(如点击),我在示例中将它放在脚本标记的顶部。这意味着它将等待 DOM 加载,然后在大括号内运行脚本,因此锚标记在它尝试查看之前可用....我的手机快死了,我明天会发布更多。
  • 我更改的另一件事是从锚标记中提取 onClick 属性,因为 jQuery 可以使用类或 id 属性为您执行此操作。由于链接的性质,我选择了一个类属性——我假设你会有多个类似的链接,如果你只有一个,你可以使用 id 代替。然后在 onReady 函数内部,您需要将点击事件绑定到该锚标记(api.jquery.com/click),这样当它被点击时,javascript 中会发生一些事情。
  • 然后我使用了一个函数在单击包含获取 AJAX 请求的链接时执行。如您所知,它调用您为第一个参数输入的文件并将该页面的结果返回到数据变量,我只是将其放入警报调用以进行测试。
猜你喜欢
  • 2019-06-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-31
  • 1970-01-01
  • 2011-06-30
  • 1970-01-01
相关资源
最近更新 更多