2012-01-18 10 views
0

次のデータセットをロードしてから、ajax呼び出し後にデータを削除しようとしています。しかし、私はアヤックスに一度しか働かせませんでした。 「さらに引用符をつける」をクリックすると、何も起こりません。ajaxは一度しか動作せず、クリック後に停止する

サイト:http://kdevs.site40.net/#more

アヤックス(より多くの引用符を取得します):

<?php 

    require("inc/connect.php"); 
    $start = $_GET['start']; 
    $limit = $_GET['limit']; 

    $sql = "SELECT * FROM entries ORDER BY id DESC LIMIT ".$start.", ".$limit; 
    $result = mysql_query($sql, $link) or die("Error in query: ".mysql_error()); 

    $data = array(); 

    while($row = mysql_fetch_array($result)) { 
     array_push($data, $row); 
    } 

    echo(json_encode($data)); 
?> 

私はそれがPHP理由ではないことを知っている:http://kdevs.site40.net/quotes.php?start=0&limit=10作品

function getQuotes(start, limit) { 
      //Clear the recent list element 
      $(".recent-list").html(""); 
      $.ajax({ 

       url: "quotes.php?start=" + start + "&limit=" + limit, 
       success: function (data) { 
       ata = jQuery.parseJSON(data); 
       console.log("success"); 
       //Data should now be a javascript array of objects. 
       for (i = 0; i < data.length; i++) { 
        var newElem = jQuery("<li></li>").attr('id', data[i].id).addClass('quote-wrap-group'); 
        newElem.append("<div class='quote'><p>" + data[i].quote + "</p></div>"); 
        $(".recent-list").append(newElem); 
       } 
       } 
      }); 
      } 

       $("#more").click(function() { 
       var currentIndex = 0; 
       getQuotes(currentIndex = currentIndex + 10, 10); 
       currentIndex += 10; 
       }); 

PHPは、JSONを返します。

私は間違っていますか?

+1

あなたのクエリはSQLインジェクションに苦しんでいます。 http://en.wikipedia.org/wiki/SQL_injectionを読んで修正してください。 – Kenaniah

+0

^私は知っています。私はクライアントにこれを送った場合、前にそれを修正します.... – nowayyy

答えて

2

ボタンをクリックするたびに、currentIndexを0にリセットして、基本的に常に最初の10個のコメントを読み込みます。
var currentIndex = 0;を削除して、クリックイベント機能

+0

あなたはそれに最初に答えました、ありがとう!私のコードを改善/改善するために他に何かできることはありますか? – nowayyy

1

チラッと見て、問題がここにあることを示唆しているの外にそれを追加します。

$("#more").click(function() { 
    var currentIndex = 0; 
    getQuotes(currentIndex = currentIndex + 10, 10); 
    currentIndex += 10; 
}); 

あなたの現在のインデックスがリセットされ#more 0にをクリックするたびに、 currentIndexをクリックハンドラの外側に宣言し、リセットしないでください。

+0

OMGありがとう!とても簡単!私のコードの中に他のものがありますか? – nowayyy

1
は、クリックハンドラの外に currentIndex初期化を移動

、あなたは変化に、二回追加している:

var currentIndex = 0; 
var count = 20; 
$("#more").click(function() { 
    getQuotes(currentIndex, count); 
    currentIndex += count; 
}); 
+0

答えを更新しました。 – scessor

+0

あなたは引用符を得ることはありません0 - > 10 – paislee

+0

@paislee:thx、私は私の答えを更新しました。 – scessor

関連する問題