【问题标题】:Using php within a href but keeping on the same page with jquery在 href 中使用 php 但与 jquery 保持在同一页面上
【发布时间】:2012-11-21 04:33:02
【问题描述】:

基本上我有一个href,它通过json传递图像的id,如下所示:

http://localhost:4567/public/vote.html?image=50b4d006fa4634bb130000fe

然后,这会根据 id 在 mongo 中创建/更新图像,并在用户/访问者投票时更新。

在处理完 vote.html 中的代码后,我使用 silex 进行重定向:

 return $app->redirect('popular.html'); 

我想知道是否可以使用 jquery 来处理上面的 href 而无需重定向,所以基本上我可以点击投票,并且数字会在用户不知道他们已被重定向的情况下无缝更改。

已回答

抱歉这个模糊的问题,但我的回答确实来自下面发布的原则。

我更改了 href 以分配投票类别和图像的 id:

<a class="vote" id="' + image.id + '" href="#">

然后将此添加到我的 $(document).ready 函数中:

$(".vote").live('click', function() {
        $('span', this).toggle();
        $.ajax( site_url + 'vote.html?image=' + $(this).attr('id'));
    });

理论上this使用mongo对象的id,每次点击对象时将其附加到url,处理href而不重定向。

【问题讨论】:

  • 您可以使用 ajax 更新或创建数据库中的行,然后使用 $('#num_votes').html(parseInt($('#num_votes') 之类的投票增加 div。 html())++);

标签: php jquery redirect silex


【解决方案1】:

是的,您可以使用一些 jQuery 来帮助您。这是一个非常人为的示例,因为您没有为您的投票按钮/图像提供任何 HTML 标记示例。

$(function() { // anything in here will happen once the DOM is ready
    $('.vote').click(function(e) { // assign click for each elem w/ class "vote" 
        e.preventDefault(); // prevent default action (if elem was an anchor)
        // Make the server request asynchronously
        var $this = this;
        $.ajax({
            type: "POST", // or "GET"; or use $.post()/$.get() 
            url: $(this).attr("href"), // the href of the anchor
            data: null // or JSON here (e.g. { 'id': 'abcde' })
        }).done(function(data) { // vote.html should be image data of some kind
            // update the DOM with the new vote image
            // possible example if response was base64 encoded png
            $($this).closest('image').attr("src", "data:image/png;base64," + data);
        });
    });
});

【讨论】:

    【解决方案2】:

    为什么不使用 AJAX 来更新号码? jquery.ajax() 真的很简单

    【讨论】:

    • 虽然理论上这可以回答这个问题,it would be preferable 在这里包含答案的基本部分,并提供链接以供参考。
    • 有什么方法可以解释答案,并提供更多细节吗?欢迎来到 Stack Overflow,我们尝试在这里给出相当冗长的答案,而不是一个衬里(而且当你写出好的答案时你会获得代表)
    【解决方案3】:

    你可以像这样覆盖 jQuery 中的点击事件:

    $("a").click(function(event) {
      event.preventDefault();
      // DO MY STUFF HERE
    });
    

    【讨论】:

    • 什么给出了 - 我读到的问题是 - 如果可以使用 jquery 来处理上述 href 而不重定向。
    • 此代码不会处理任何内容。它只会阻止“点击”做任何事情。虽然单击锚标记时需要此代码来停止重定向,但您的示例中不存在“处理”请求(这是主要问题)所需的代码
    • 我仍然看不到 OP 在哪里询问如何在幕后进行 mongo 工作,OP 只是在询问“是否可以使用 jquery 来处理上述 href 而无需重定向” .我就是这么回答的。如果 OP 需要除此之外的任何内容,则应在问题中说明。无论哪种方式,恕我直言,它都不值得投反对票。
    • 是的,我只是在问这是否可能,也许应该采取什么方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-06
    • 2021-10-04
    • 1970-01-01
    • 2022-10-04
    • 1970-01-01
    • 2014-10-05
    • 1970-01-01
    相关资源
    最近更新 更多