0

私は、スクリプトのチュートリアルの編集と検索以外に、JavaScript の経験がほとんどまたはまったくないと言って始めます。私はしばらくの間、自分のサイトで小さなシャウト ボックス スクリプトを利用してきました。新しいプラグインとスクリプトが追加されてから、問題が見つかりました。

Shoutbox は約 10 ~ 15 行のテキストをテキスト ファイルに保存し、それらを表示して (ajax スタイルで) 更新し、15 行後に削除します。単純な小さなスクリプトです。

これで、Shoutbox はテキストを読み込まなくなり、空白で表示されるようになりました。jQuery.noConflict(); を利用しようとしました。オプションですが、役に立ちません。ボックスをロードしますが、(データを投稿するために)送信を押しても(SQLは関係ありません)何も起こりません。更新すると、ボックスに表示されます。だから私はそれがデータをライブで渡すことに関係していることを知っています。

これがスクリプトです(大きくありません)

<script type="text/javascript">
    var count = 0;
    var files = 'application/widgets/nipunashoutbox/demos/jquery-shoutbox/';
    var lastTime = 0;

    function prepare(response) {
      var d = new Date();
      count++;
      d.setTime(response.time*1000);
      var mytime = d.getHours()+':'+d.getMinutes();
      var string = '<div class="shoutbox-list" id="list-'+count+'">'
          + '<span class="shoutbox-list-time">'+mytime+'</span>'
          + '<span class="shoutbox-list-nick">'+response.nickname+':</span>'
          + '<span class="shoutbox-list-message">'+response.message+'</span>'
          +'</div>';

      return string;
    }

    function success(response, status)  { 
      if(status == 'success') {
        lastTime = response.time;
        $('#daddy-shoutbox-response').html('<img src="'+files+'images/accept.png" />');
        $('#daddy-shoutbox-list').prepend(prepare(response));
        $('input[@name=message]').attr('value', '').focus();
        $('#list-'+count).fadeIn('slow');
        timeoutID = setTimeout(refresh, 3000);
      }
    }

    function validate(formData, jqForm, options) {
      for (var i=0; i < formData.length; i++) { 
          if (!formData[i].value) {
              alert('Please fill in all the fields'); 
              $('input[@name='+formData[i].name+']').css('background', 'red');
              return false; 
          } 
      } 
      $('#daddy-shoutbox-response').html('<img src="'+files+'images/loader.gif" />');
      clearTimeout(timeoutID);
    }

    function refresh() {
      $.getJSON(files+"daddy-shoutbox.php?action=view&time="+lastTime, function(json) {
        if(json.length) {
          for(i=0; i < json.length; i++) {
            $('#daddy-shoutbox-list').prepend(prepare(json[i]));
            $('#list-' + count).fadeIn('slow');
          }
          var j = i-1;
          lastTime = json[j].time;
        }
        //alert(lastTime);
      });
      timeoutID = setTimeout(refresh, 3000);
    }

    // wait for the DOM to be loaded 
    $(document).ready(function() { 
        var options = { 
          dataType:       'json',
          beforeSubmit:   validate,
          success:        success
        }; 
        $('#daddy-shoutbox-form').ajaxForm(options);
        timeoutID = setTimeout(refresh, 100);
    });

複数の Web サイト (stackoverflow のディスカッションを含む) をチェックアウトした後に私が試みたことは、スニペット noConflict.jQuery(); を追加することでした。最初のスクリプト行の後。

次に、各 $ を jQuery に割り当てた後、ゆっくりと jQuery や別の変数に置き換えます。私が得た最も近いものは、更新のロード時にフリーズする場所、またはエコーする新しいページを起動する場所でした:

{"response":"Good work","nickname":"myusername","message":".","time":1364101631}

これを再び機能させたいので、現在助けを求めています。十分に説明できていれば幸いです。申し訳ありませんが、他に何を含める必要があるか教えてください。これをお読みいただきありがとうございます。サポートに感謝します。

編集

ヘッダーに呼び出されるスクリプトを含めるのを忘れていたことをお詫びします。

  <script type="text/javascript" src="application/widgets/nipunashoutbox/js/jquery.js"></script>
  <script type="text/javascript" src="application/widgets/nipunashoutbox/js/jquery.form.js"></script>
4

1 に答える 1

1

jQuery.noConflict();変数と等しく設定する必要があります。そこから交換できます。チャットボックスが呼び出されるときはいつでも、次のようなことができます。

var j = jQuery.noConflict();
j(document).ready(function() {
    console.log('jQuery is loaded'); // lets you know jQuery has loaded
}

だからあなたの場合:

<script type="text/javascript">
    var j = jQuery.noConflict();
    var count = 0;
    var files = 'application/widgets/nipunashoutbox/demos/jquery-shoutbox/';
    // omitting some code...
    function success(response, status)  { 
      if(status == 'success') {
            lastTime = response.time;
            j('#daddy-shoutbox-response').html('<img src="'+files+'images/accept.png" />');
            j('#daddy-shoutbox-list').prepend(prepare(response));
            j('input[@name=message]').attr('value', '').focus();
            j('#list-'+count).fadeIn('slow');
            timeoutID = setTimeout(refresh, 3000);
      }
    }

    // omitting more code...
</script>

上記の方法を使用して、$のすべてのインスタンスを置き換える必要があります。jうまくいけば、これが役立ちます!これが実際のデモです!

于 2013-03-24T05:25:06.160 に答える