0

我的 PHP 页面

<ul id="upvote-the-image">
<li><a href="javascript:return false;" rel="50" id="upvote">Upvote</a><img src="image.png" /></li>
</ul>​

当前正在成功将变量发送到 javascript

$("#upvote").each(function(index) {
var upthis = $(this).attr("rel");
var plusone = upthis;
$.post("upvote.php", {
    'plusone': plusone
});
alert(plusone);
});​

(代码中的警报用于测试)我有多个使用 rel 标签的图像。我希望每个人都能够被投票并表明他们在页面上被投票而不加载新页面。

我的问题和问题:我的下一步是什么?我只想知道如何向 upvote.php 发送值。我知道如何使用 mysql 添加赞成票,只是不知道如何向 upvote.php 发送值,或者即使我的 javascript 代码正确打开了页面。

谢谢

4

3 回答 3

0

一个很好的 JQuery 编程技巧,不要这样做:

<a href="javascript:return false;"

相反,请执行以下操作:

$(function(){
    $('#upvote').on('click', function(event){
        event.preventDefault();
        $.post('upvote.php', {'plusone': $(this).attr('rel')}, function(data){
          alert('done and upvoted');
        });
    });
});

这是处理 DOM 文档上的链接的更好方法。

以下是一些文档页面,供您阅读有关我使用的编码的信息:

这些将向您解释我的代码。

希望能帮助到你,

于 2012-06-28T20:36:55.397 回答
0

我认为你需要这样的东西:

<ul id="upvote-the-image">
    <li><span rel="50" id="upvote">Upvote</span><img src="image.png" /></li>
</ul>​
<span id="result"></span>

$("#upvote").click(function(index) {
  var upthis = $(this).attr("rel");
  var oOptions = {
url:    upvote.php, //the receiving data page
    data: upthis, //the data to the server
    complete: function() { $('#result').text('Thanks!') }  //the result on the page
  };
  $.ajax(oOptions);
}

您不需要锚点,我将其更改为跨度,您可以在浏览器中使用 F12 测试 asyc 连接

于 2012-06-27T23:53:12.777 回答
0

您的 javascript 永远不会打开 php 页面,它只是向它发送数据,并接收带有响应的 http 标头。您的 php 脚本应该监视$_POST['plusone']并相应地处理数据库处理。你的下一步是在你的$.post函数中编写一个回调,我建议在学习时将其更改为完整的 ajax 函数,因为它更容易理解和查看正在发生的所有部分。

$.ajax({
type: 'POST',
url: "upvote.php",
data: {'plusone': plusone},
success: function(IDofSelectedImg){
    //function to increment the rel value in the image that was clicked
      $(IDofSelectedImg).attr("rel")= upthis +1;
      },

});

您需要每个 img 元素的唯一标识符才能选择它,并将其 id 发送到 php 脚本。添加一个类而不是 idupvote并使 id 成为一个唯一可识别的数字,当您需要增加 rel 值时,您可以使用 jquery 作为目标。(从外观上看,您似乎正在将 rel 属性中的值放入数据库中以代替旧值。)

于 2012-06-28T00:01:29.833 回答