小编Cla*_*dio的帖子

jQuery.ajax处理继续响应:"success:"vs".done"?

我已经使用jQuery和AJAX几周了,我看到了两种不同的方法来在调用完成后"继续"脚本:success:.done.

jQuery文档的概要我们得到:

.done():说明:添加要在解析Deferred对象时调用的处理程序.

success:(.ajax()option):请求成功时调用的函数.

因此,在AJAX调用完成/解决之后,两者都做了一些事情.我可以随机使用其中一个吗?有什么区别,什么时候使用而不是另一个?

ajax jquery

303
推荐指数
2
解决办法
17万
查看次数

.replaceWith()只工作一次

我正在尝试在我的网站中实现用户声誉系统.因此,您可以在每次交互时查看用户名后面的代表编号(例如,每次他发表评论时).还有一个投票系统也改变了用户的声誉,我希望代表号反映这一变化.所以我通过ajax调用一个文件,该文件返回该用户的新代表号.html/php文件是第一个实例(如果他发帖):

echo '<div class="rep_user_id" id="rep_user_id_'.$posts_row['userid'].'"> '.$posts_row['user_rep'].'</div>';
Run Code Online (Sandbox Code Playgroud)

然后(如果他发表评论):

echo '<div class="rep_user_id" id="rep_user_id_'.$com_row['userid'].'">'.$com_row['user_rep'].'</div>';
Run Code Online (Sandbox Code Playgroud)

都给我这个:

<div class="rep_user_id" id="rep_user_id_110">293</div>
Run Code Online (Sandbox Code Playgroud)

那么js:

function change_reps() {
var userid = $('.rep_user_id').attr('id').replace('rep_user_id_','');
$.ajax({
 url: "vote/get_reputation.php",
 data: "userid="+userid,
 success: function(server_response){
 $("body").ajaxComplete(function(event, request){
   var reputation = server_response;
   $('#rep_user_id_'+userid).replaceWith(''+reputation);
   $('#rep_user_id_'+userid).effect("highlight", {color:'red'}, 1000);
 });  } });  }
Run Code Online (Sandbox Code Playgroud)

在另一个ajax成功后调用此函数(更新rep和votes).因此,从中可以看出:当我向上或向下点击任何箭头时,我可以看到投票计数器向上或向下,但我只看到用户代表只改变了第一个实例(post).为什么它只改变一次而不是整个文件?有什么可以做的,从另一个文件(带有包含)调用评论部分?仅供参考,效果适用于所有情况!希望你能帮忙.谢谢

编辑:因为我已经看到我没有很好地解释自己,我正在添加更多的行.问题是我不能一次修改具有相同id和类的多个元素(而不是多次更改一个元素).所以我在整个页面中有293次,但发布的代码只改变了一个元素!这是触发change_reps()的原因:

$("body").on("click", ".vote_com_up", function(){
   var com_id = $(this).attr('id').replace('vote_com_up_','');
   $.ajax({ 
    url: "vote/comment_vote.php",
    data: "com_action=2&com_id="+com_id,
    success: function(server_response){
    $(".vote_com_number").ajaxComplete(function(event, request){
     if(server_response == 'voted')
       { alert("Ya has votado en este post!");}
    else{
       var new_com_votes = server_response; 
       $("#vote_com_number_"+com_id).html(+new_com_votes);
    } …
Run Code Online (Sandbox Code Playgroud)

javascript jquery

11
推荐指数
3
解决办法
4240
查看次数

z-index在ipad中运行得不好

我正在为朋友(http://pasionesargentas.com/sm/)建立一个网站,其中包含带有缩略图翻转的全屏画廊(http://tympanus.net/codrops/2011/02/09/fullscreen-gallery-with- thumbnail-flip /).我不太喜欢翻盖的想法所以我只是喜欢禁用它并添加一个菜单.菜单div css就像

#top {
position:fixed;
background: transparent;
display: block;
z-index: 99999;
}
Run Code Online (Sandbox Code Playgroud)

它适用于Chrome,Safari,Explorer和Opera.但出于某种原因,她无法在iPad上看到菜单.因为我没有ipad,所以我下载了Ripple Mission Control并且工作正常,所以我不知道发生了什么.

现在,问题是:我必须为平板电脑浏览器(iPad)做不同的CSS吗?或者是画廊弄乱菜单并覆盖它?

html css z-index mobile-safari

6
推荐指数
1
解决办法
1万
查看次数

mysql SELECT * WHERE 日期 + 7 天 &gt;= $today

我只是想知道是否有一种方法可以只调用一次数据库来完成此过程。我基本上需要计算数据库中今天日期早于字段“date_out”+ 7 天的条目。我在想:

$today = date("Y-m-d"); //this is the format of date_out in my db!

$count_query = "SELECT count(*) FROM `group` WHERE ADDDATE('date_out', INTERVAL 7 DAY) <= $today  ";
$count_result = mysql_query($count_query) or trigger_error("SQL", E_USER_ERROR);
$query_data = mysql_fetch_row($count_result);
$number_ty = $query_data[0];

if ($number_ty >= 1) {
// do something
}
Run Code Online (Sandbox Code Playgroud)

对于此代码,$number_ty 始终为 0。如前所述,此问题的目标是了解是否可以仅通过一次 mysql 调用(而不是两次)来完成计数。我的目标只是简单、干净和懒惰:-)

谢谢!

mysql date

1
推荐指数
1
解决办法
4467
查看次数

将数组存储在sql数据库中

我开始进入数组并且不能让它运行良好.我习惯使用explode/implode函数,但是我在这部分代码中使用数组会让我的生活变得更轻松.这是一个叫做的函数:

function save_event($event_items = NULL) {
include 'connect.php';

$now = date("Y-m-d H:i:s");
$sqla = "
INSERT INTO `event`(`event_items`, `event_entered`)
    VALUES ('$event_items','$now')";

    $resulta = mysqli_query($link, $sqla);
    if(!$resulta)
        {
        echo '<br/>An error occurred while inserting your data. Please try again later.<br/>';
        }
    else
        { echo 'this is the variable to be stored:<br/>';
          print_r($event_items);

          $sql = "SELECT * FROM `event` WHERE event_entered = '".$now."'";
          $result = mysqli_query($link, $sql);

          if($result)
            { while($row = mysqli_fetch_assoc($result))
                  { echo '<br/></br>This is the value of the database:<br/>';
                    print_r …
Run Code Online (Sandbox Code Playgroud)

php mysql arrays

0
推荐指数
1
解决办法
5017
查看次数

PHP password_verify不适用于数据库

我正在尝试一个更安全的页面,我开始使用密码加密部分.我正在尝试实现password_hash +密码验证,但到目前为止,我还没有成功完成整个工作.所以,这是在我的登录区域:

$username = mysqli_real_escape_string($connection, $_POST['username']);

$password = mysqli_real_escape_string($connection, $_POST['password']);

$query = "SELECT username, password FROM `users` WHERE username='$username' and user_enabled='1'";
$result = mysqli_query($connection, $query) or die(mysqli_error($connection));
if($row = mysqli_fetch_assoc($result)) { $dbpassword = $row['password']; }

if(password_verify($password, $dbpassword)) {
    echo "Successful login";
}else{
    echo "Invalid Login Credentials.";
}
Run Code Online (Sandbox Code Playgroud)

我总是获得无效的登录凭据.

当我修改用户的新密码时,我正在执行以下操作:

$pass = mysqli_real_escape_string($connection, $_POST['password']);
$options = [ 'cost' => 10,
             'salt' => mcrypt_create_iv(22, MCRYPT_DEV_URANDOM),
           ];
$password = password_hash($pass,  PASSWORD_BCRYPT, $options)."\n";

$query = "UPDATE users 
          SET `password` = '".$password."'
          WHERE id = …
Run Code Online (Sandbox Code Playgroud)

php mysql password-protection php-password-hash

0
推荐指数
1
解决办法
839
查看次数